wikipost
mw
https://www.marcelpost.com/wiki/index.php/Main_Page
MediaWiki 1.39.10
first-letter
Media
Special
Talk
User
User talk
Wikipost
Wikipost talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
File:Green figbird 03341.jpg
6
521
2042
1970-01-01T01:54:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
OriginalStartPage
0
2
4
2011-08-30T00:42:53Z
Admin
1
New page: <big>'''MediaWiki has been successfully installed.'''</big> Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting...
wikitext
text/x-wiki
<big>'''MediaWiki has been successfully installed.'''</big>
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
== Getting started ==
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]
08fc850f2898611c250d639e30f69532b5a016f8
Projects
0
3
6
2011-08-30T01:24:16Z
Admin
1
New page: projects
wikitext
text/x-wiki
projects
b37b5674e3d09445a4d65889a79251ca6aab804b
Wikipost:Privacy policy
4
6
12
2011-08-30T01:56:53Z
Admin
1
New page: No Guarantee of Validity The contents of all material available on marcelpost.com are intended to provide useful information for its viewers. While we makes every effort to present accu...
wikitext
text/x-wiki
No Guarantee of Validity
The contents of all material available on marcelpost.com are intended to provide useful information for its viewers.
While we makes every effort to present accurate and reliable information in its services, we does not endorse, approve, or certify such information, nor does it guarantee the accuracy, completeness,
efficacy, timeliness, or correct sequencing of such information. Information on this site may or may not be current as of the date of your access, and we have no duty to update and maintain the information,
reports, or statements on the Services. Additionally, the information on this site may be changed periodically without prior notice. All content on this site is provided "as is." Use of such information is
voluntary, and reliance on it should only be undertaken after an independent review of its accuracy, completeness, efficacy, and timeliness. Additionally, please note that this site is a community-based
question-and-answer service using the "wiki" approach of developing answers that the community constantly improves. For some pages we allow ANYONE at any time to write and edit content on this site.
None of the licensors, contributors, sponsors, administrators, or anyone else connected with this site in any way whatsoever can be responsible for the appearance of any inaccurate information or for your
use of the information contained in or linked from this site.
External Links
We also provides external links to other websites. We make no representation whatsoever regarding the content of any other websites that you may access from this site. We have no control over the content of
these websites and cannot guarantee the reliability or accuracy of any information linked externally.
No Professional Advice
We provides professional information for informational purposes only, which should not be construed as advice. No action should be taken based upon any information contained on this site. You should seek
independent professional advice from a person who is licensed and/or knowledgeable in the applicable area before acting upon any opinion, advice, or information contained on this site.
8c03ed7cc5f1780858245cd7e0e3e9d739d0ed96
Worklog
0
9
16
15
2011-08-30T02:02:10Z
Admin
1
wikitext
text/x-wiki
Worklog
<pre>
#!/bin/sh
# worklog
#
# (C)2010 Marcel Post. All Rights Reserved
# Last modified: 22 December 2010 (optimised for Bashv4, possibly Dash too)
#
# This script tracks changes made to files in a target directory.
# The way it works is that it will calculate the time between when
# a file was first edited (poll every 5 minutes) and when the last
# change was made (assuming that no edits were made for 60 minutes).
#
# For permissions, the cron executer must own the 'worklog' file
#
# Example cron entry:
#
# */5 * * * * /usr/local/bin/worklog /var/www/attendance [path-to-worklog-file]
#
#
# BUGS
#
# once had that a file could not be 'stat' by worklog, as if it was locked by
# vi when I was writing back the changes or so..
#
#
# TODO
# - add a --help switch with version number etc
#
# User Variables:
WL=worklog # name and location of the worklog file
TMPDIR=/tmp # a temp directory that we can safely write to
IDLEMINS=20 # when we should consider an edit to be finished
DEBUG=0 # turn on for more verbose output
# --- script follows ---
if test $# -lt 1
then
# no arguments provided
echo "Syntax: worklog [path-to-worklog-file]"
exit 1
fi
if test $# -lt 2
then
# one argument provided. Can either be:
# -show to display the worklog file, or
# to find changes in the 'path' files and directories and
# write the updates to the worklog file located in 'path'
if test $1 = "-show"
then
# use current directory to find the workdir file
DEBUG=2
# set projectdir
PROJECTDIR=`pwd`
# set worklog file
WORKLOG=$PROJECTDIR/$WL
else
# using project directory as specified with argument 1
# also use the path directory to find the worklog file
if test -d $1
then
# project dir exists ok
PROJECTDIR=$1
# set worklog file
WORKLOG=$PROJECTDIR/$WL
else
echo "Project directory does not exist"
exit 1
fi
fi
else
# at least two arguments provided. Can either be:
# -show to display the worklog file in the
# specified 'path'
# update worklog in a possibly different
# location than the 'path' specification
if test $1 = "-show"
then
# use second argument to find the worklog file
DEBUG=2
# set location of worklog file
if test -f $2
then
# worklog file exists ok
WORKLOG=$2
else
echo "Could not access worklog file at $2"
echo "Please create a worklog file by running an update first"
echo "Syntax: worklog [path-to-worklog-file]"
exit 1
fi
else
# test if arguments link to an existing directory and a worklogfile
if test -d $1
then
# project dir exists ok
PROJECTDIR=$1
else
echo "Project directory does not exist"
exit 1
fi
# just set the name and location of the worklog file to the second argument
# testing if it exists happens further in the script
WORKLOG=$2
fi
fi
# uncomment for debugging purposes
#if test $# -eq 2
#then
# if test $2 = "-d"
# then
# DEBUG=1
# echo
# fi
# if test $2 = "-show"
# then
# # show real dates instead of timestamps
# DEBUG=2
# echo
# fi
#fi
# test if project directory exists
if ! test -d $PROJECTDIR
then
echo "Project directory not found"
exit 1
fi
# test if logfile exists
if test -f $WORKLOG
then
# -- check existing worklog file --
# check if worklog has a filesize greater than zero
if test -s $WORKLOG
then
# check if we can recognise the header of the file
WORKLOG_HEADER=`head -n 1 $WORKLOG`
if test `echo $WORKLOG_HEADER | awk -F : '{print $1}'` = "LAST-CHANGED" > /dev/null 2>&1
then
NEWFILE=0
else
echo "The worklog file seems corrupt. Please check."
echo "if possible delete $WORKLOG"
exit 1
fi
else
NEWFILE=1
fi
# check permissions
if ! test -O $WORKLOG
then
if test $DEBUG != 2
then
echo "File $WORKLOG is not owned by the user running this script! Exiting now."
exit 1
fi
fi
# check if we have write permissions to the worklog file
# who is running this script
RUNUID=`set | grep ^UID | awk -F = '{print $2}'`
#get stat from logfile
LOGFSTAT=`/usr/bin/stat $WORKLOG | grep Uid`
#check if Uid is same as the user running this script
LOGF_PERMS=`echo $LOGFSTAT | awk -F Uid '{print $1}' | awk -F / '{print $2}' | cut -c 3`
if test "$LOGF_PERMS" != "w"
then
echo "No write permissions to worklog file! Exiting now."
exit 1
fi
# Excellent!
# if we're still in the running here, we've got:
#
# - an existing worklog file (maybe zero length)
# - owned by the runner of this script
# - with write permissions
else
# -- create new worklog file --
if test $DEBUG = 2
then
echo "Please create a worklog file by running an update first"
echo "Syntax: worklog [path-to-worklog-file]"
exit 1
else
echo "Worklog at $WORKLOG not found"
echo -n "Attempting to create a new worklog file... "
if touch $WORKLOG > /dev/null 2>&1
then
echo "ok"
if test $DEBUG = 1
then
echo "new worklog created"
fi
NEWFILE=1
else
echo "Permission denied!"
exit 1
fi
fi
fi
# -- part 1 b --
# show human readable dates and summarise time spent
# if we were called with the -show argument now is the
# time to display the worklog file using real date (ymd)
# instead of timestamps.
if test $DEBUG = 2
then
echo "worklog for $1"
TOTALTIME=0
TOTALTIME_W=0
TOTALTIME_C=0
MAXLINES=`grep -c minutes $WORKLOG`
MAXLINES=$((MAXLINES + 2))
LINENR=3
PREVWEEK=0
DO_WEEKSUMMARY=0
while test $LINENR -le $MAXLINES
do
READLN=`cat $WORKLOG | head -n $LINENR | tail -n 1`
# only process completed entries..
if echo $READLN | grep minutes > /dev/null 2>&1
then
DO_PRINT=1
BEGINTIME=`echo $READLN | awk '{print $1}'`
WEEKNR=`date -d @$BEGINTIME +%U`
if test $PREVWEEK -eq 0
then
PREVWEEK=$WEEKNR
else
if test $WEEKNR != $PREVWEEK
then
DO_WEEKSUMMARY=1
fi
fi
else
# incomplete line detected. Don't print anything
DO_PRINT=0
fi
# show week summary line
if test $DO_WEEKSUMMARY -eq 1
then
if test $TOTALTIME -gt 0
then
# new week detected
TOTAL_HOURS_W=$((TOTALTIME_W / 60))
TOTAL_HXM_W=$((TOTAL_HOURS_W * 60))
TOTAL_MINUTES_W=$((TOTALTIME_W - TOTAL_HXM_W))
echo -n "Summary for week $PREVWEEK: $TOTALTIME_W minutes $TOTAL_HOURS_W h $TOTAL_MINUTES_W m"
# cumulative week totals
TOTALTIME_C=$((TOTALTIME_C + TOTALTIME_W))
TOTAL_HOURS_C=$((TOTALTIME_C / 60))
TOTAL_HXM_C=$((TOTAL_HOURS_C * 60))
TOTAL_MINUTES_C=$((TOTALTIME_C - TOTAL_HXM_C))
echo " ($TOTAL_HOURS_C h $TOTAL_MINUTES_C m)"
echo "--"
PREVWEEK=$WEEKNR
fi
DO_WEEKSUMMARY=0
TOTALTIME_W=0
fi
BEGINTIME=`date -d @$BEGINTIME`
ENDTIME=`echo $READLN | awk '{print $2}'`
ENDTIME=`date -d @$ENDTIME`
DIFFERENCE=`echo $READLN | awk '{print $3}'`
TOTALTIME_W=$((TOTALTIME_W + DIFFERENCE))
TOTALTIME=$((TOTALTIME + DIFFERENCE))
# print entry on screen
echo "$BEGINTIME to $ENDTIME = $DIFFERENCE minutes"
# show week summary if we've reached the last line
if test $LINENR -eq $MAXLINES
then
TOTAL_HOURS_W=$((TOTALTIME_W / 60))
TOTAL_HXM_W=$((TOTAL_HOURS_W * 60))
TOTAL_MINUTES_W=$((TOTALTIME_W - TOTAL_HXM_W))
echo -n "Summary for week $PREVWEEK: $TOTALTIME_W minutes $TOTAL_HOURS_W h $TOTAL_MINUTES_W m"
# cumulative week totals
TOTALTIME_C=$((TOTALTIME_C + TOTALTIME_W))
TOTAL_HOURS_C=$((TOTALTIME_C / 60))
TOTAL_HXM_C=$((TOTAL_HOURS_C * 60))
TOTAL_MINUTES_C=$((TOTALTIME_C - TOTAL_HXM_C))
if test $TOTALTIME_C -eq $TOTALTIME_W
then
echo
else
echo " ($TOTAL_HOURS_C h $TOTAL_MINUTES_C m)"
fi
echo "--"
fi
LINENR=$((LINENR + 1))
done
echo "---------------------------"
echo -n " $TOTALTIME minutes"
TOTAL_HOURS=$((TOTALTIME / 60))
TOTAL_HXM=$((TOTAL_HOURS * 60))
TOTAL_MINUTES=$((TOTALTIME - TOTAL_HXM))
echo " $TOTAL_HOURS h $TOTAL_MINUTES m"
exit 1
fi
# -- part 2 --
# track changes
# find out which file was lastly changed
# the first line of the worklog file will be used to track changes
#
# Example:
# LAST-CHANGED : 1273572131 left.php
# get just the file name of a regular file that was changed last
LC_FILENAME=`/bin/ls -tr1 $PROJECTDIR | grep -v $WL | tail -n 1`
# get the timestamp for this file
LC_TIMESTAMP=`/usr/bin/stat --format=%Y $PROJECTDIR/$LC_FILENAME`
# compare this with what's in the worklog
# -- create worklog header in case of new file --
if test $NEWFILE = 1
then
WORKLOG_HEADER="LAST-CHANGED : $LC_TIMESTAMP $LC_FILENAME"
echo $WORKLOG_HEADER > $WORKLOG
echo "--" >> $WORKLOG
if test $DEBUG = 1
then
echo "created new worklog header for file: $LC_FILENAME"
fi
fi
# update the header if a change has been detected
if echo $WORKLOG_HEADER | grep -e "$LC_TIMESTAMP $LC_FILENAME" > /dev/null 2>&1
then
# no changes detected
CHANGES=0
if test $DEBUG = 1
then
echo "no changes detected"
fi
else
CHANGES=1
# a recent change has been made
if test $DEBUG = 1
then
echo "changes detected in file: $LC_FILENAME"
echo "updating header"
fi
# update the worklog header
# get the total number of lines in the worklog (minus one)
WL_MAXLINES=`wc -l $WORKLOG | awk '{print $1}'`
WL_MAXLINES=$((WL_MAXLINES - 1))
#set the new header
WORKLOG_HEADER="LAST-CHANGED : $LC_TIMESTAMP $LC_FILENAME"
#rewrite the worklog file
cat $WORKLOG | tail -n $WL_MAXLINES > $TMPDIR/tmpfil_worklog.001
echo $WORKLOG_HEADER > $WORKLOG
cat $TMPDIR/tmpfil_worklog.001 >> $WORKLOG
rm $TMPDIR/tmpfil_worklog.001
fi
# -- lastline updating --
# get the last line of the worklog
WL_LASTLINE=`tail -n 1 $WORKLOG`
WL_LL_LENGTH=${#WL_LASTLINE}
# the length of the line is an indication as to what's written in it
# length up to 18 chars = unknown
# length is greater than 30 chars = minutes have been calculated
if test $CHANGES = 1
then
if test $WL_LL_LENGTH = 2 || test $WL_LL_LENGTH -gt 18
then
# open new lastline
WL_LASTLINE="$LC_TIMESTAMP unknown"
echo $WL_LASTLINE >> $WORKLOG
if test $DEBUG = 1
then
echo "opening new tracker line"
fi
fi
fi
# -- timestamp updating --
# are we checking after the idle time?
# get timestamp for right now
TIME_NOW=`date +%s`
# create timestamp for LC_TIMESTAMP + ( N x 60 )
IDLESECS=$((IDLEMINS * 60))
TIMESTAMP_IDLE=$((LC_TIMESTAMP + IDLESECS))
# test if our present time is the IDLE time past the Last Changed time
if test $TIME_NOW -gt $TIMESTAMP_IDLE
then
# we're past our idle time
# update 'unknown' with the last known time from the header
# and calculate the difference
#
# just exit if unkown is not the last keyword
if test $WL_LL_LENGTH = 18
then
# line has not been closed yet, do so now
if test $DEBUG = 1
then
echo "past idle time, closing tracker line"
fi
# get the last known change time from the header
WL_TS=`head -n 1 $WORKLOG | awk '{print $3}'`
#rewrite the last line of the logfile
# get the total number of lines in the worklog (minus one)
WL_MAXLINES=`wc -l $WORKLOG | awk '{print $1}'`
WL_MAXLINES=$((WL_MAXLINES - 1))
#set the lastline with an updated timestamp
WL_LASTLINE_PRE=`echo "$WL_LASTLINE" | awk '{print $1}'`
#calculate the time between start and finish
WL_STARTTIME=`tail -n 1 $WORKLOG | awk '{print $1}'`
TIMESPAN=$((WL_TS - WL_STARTTIME))
TIMESPAN=$((TIMESPAN / 60))
WL_LASTLINE="$WL_LASTLINE_PRE $WL_TS $TIMESPAN minutes"
#rewrite the worklog file
cat $WORKLOG | head -n $WL_MAXLINES > $TMPDIR/tmpfil_worklog.001
cat $TMPDIR/tmpfil_worklog.001 > $WORKLOG
if [ $TIMESPAN -le 0 ] || [ $TIMESPAN -gt 720 ]
then
# ignore updating the last line, it was probably faulty anyway
echo > /dev/null
if test $DEBUG = 1
then
echo "timespan zero, negative or too big, not writing tracker line"
echo "details:"
echo "original starttime: $WL_STARTTIME"
echo "last changed time: $WL_TS"
fi
else
echo $WL_LASTLINE >> $WORKLOG
if test $DEBUG = 1
then
echo "updating tracker line with timespan"
fi
fi
rm $TMPDIR/tmpfil_worklog.001
fi
fi
if test $DEBUG = 1
then
echo "Timestamp now: `date +%s` `date`"
fi
# That's all folks
</pre>
295edeafcc9ace66279f1586d2a52434016e42e3
Bombs
0
10
18
17
2011-08-30T02:03:38Z
Admin
1
wikitext
text/x-wiki
Classic Bash creativity:
<pre>
:(){ :|:& };:
</pre>
To prevent it, make sure /etc/security/limits.conf has something sensible:
vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200
Above will prevent anyone in the student group from having more than 50 processes, faculty and pusers group limit is set to 100 and 200. Vivek can create only 300 process. Please note that KDE and Gnome
desktop system can launch many process.
e0927076cfb9dc6554657460b36651c77a13060f
WebLinks
0
12
22
21
2011-08-30T02:08:29Z
Admin
1
wikitext
text/x-wiki
A Collection of Web Links coverting various fields of interest
* [[Links:News]]
* [[Links:Computers_and_IT]]
* [[Links:Electronics]]
* [[Links:myweblinks]]
* [[Links:Travel]]
* [[Links:Sky_and_Weather]]
ca5d4866dcd15ef9d9c80557d40fd5555778bd43
Links:myweblinks
0
4
23
8
2011-08-30T02:09:30Z
Admin
1
[[Myweblinks]] moved to [[Links:myweblinks]]
wikitext
text/x-wiki
A collection of web links.
==General Interest:==
[http://slashdot.org SlashDot]
[http://www.gizmag.com GizMag]
[http://www.ted.org TED]
==Electronics==
http://www.ozelecforum.com
==Financial==
[http://www.google.com/finance?q=INDEXDJX:.DJI Dow Jones]
[http://www.x-rates.com/d/AUD/table.html Exchange Rates]
[http://www.mortgagechoice.com.au/calculators/home-loan-repayments-calculator.aspx Loan Repayments Calculator]
==Entertainment==
* [[Movies]]
==Other==
[http://www.stumbleupon.com/home/ StumbleUpon]
[http://www.timeanddate.com/worldclock/ World Clock]
b52966fcdce8d9b393df7691df70ec2bd89fc27c
Myweblinks
0
13
24
2011-08-30T02:09:31Z
Admin
1
[[Myweblinks]] moved to [[Links:myweblinks]]
wikitext
text/x-wiki
#REDIRECT [[Links:myweblinks]]
ed582c2419f3517ed433dd434c7159f0ef3cf815
Groningen
0
20
35
34
2011-08-30T03:33:24Z
Admin
1
wikitext
text/x-wiki
[http://en.wikipedia.org/wiki/Groningen_%28city%29 The entry for Groningen on Wikipedia]
[http://maps.google.com.au/maps?q=groningen&oe=utf-8&rls=org.mozilla:en-GB:official&client=firefox-a&um=1&ie=UTF-8&hq=&hnear=0x47c83286b462cca7:0xcb4b5086f9a6c8dc,Groningen,+Netherlands&gl=au&ei=irrlTb-WFZCevgO4o-TuCg&sa=X&oi=geocode_result&ct=title&resnum=1&ved=0CCoQ8gEwAA Google Maps image]
[http://www.groningermuseum.nl Groninger Museum]
[http://www.rug.nl/corporate/index Rijksuniversiteit Groningen]
[http://www.rtvnoord.nl/ Radio & TV Noord]
[http://www.martiniplaza.nl/ Martini Plaza (Martinihal)]
[http://www.fcgroningen.nl/ FC Groningen Soccer Club]
See also: [[Cities]], [[Links:Sky and Weather]]
a5fe6c725b1ebfd3c73800a744d30a543860fb4e
Newcastle
0
21
36
2011-08-30T03:34:16Z
Admin
1
New page: [http://en.wikipedia.org/wiki/Newcastle,_New_South_Wales wikipedia entry for Newcastle on Wikipedia] [http://maps.google.com.au/maps?q=newcastle+nsw&oe=utf-8&rls=org.mozilla:en-GB:officia...
wikitext
text/x-wiki
[http://en.wikipedia.org/wiki/Newcastle,_New_South_Wales wikipedia entry for Newcastle on Wikipedia]
[http://maps.google.com.au/maps?q=newcastle+nsw&oe=utf-8&rls=org.mozilla:en-GB:official&client=firefox-a&um=1&ie=UTF-8&hq=&hnear=0x6b733e1371c702e5:0x4017d681632a8a0,Newcastle+NSW&gl=au&ei=lLzlTcGaBo6YvAPh-JHxCg&sa=X&oi=geocode_result&ct=title&resnum=1&ved=0CCYQ8gEwAA Google Maps image]
[http://www.visitnewcastle.com.au/ Visit Newcastle Tourism site]
[http://www.newcastle.nsw.gov.au/ Newcastle City Council]
[http://www.newcastle.edu.au/ University of Newcastle]
[http://www.newcastle.edu.au/school/drama-fine-art-music-conservatorium/areas/conservatorium/ Conservatorium]
[http://www.newportcorp.com.au/site/index.cfm Newcastle Port Corporation]
See also: [[Cities]], [[Links:Sky and Weather]]
ec02a4cb7b8f910a121181c20c146f0a9039d7e3
Links:Sky and Weather
0
22
37
2011-08-30T03:34:37Z
Admin
1
New page: ==Weather== Australia [http://www.bom.gov.au Bureau of Meteorology] [http://www.essentialenergy.com.au/content/stormtracker Storm Tracker] ==Astronomy== http://www.heavens-above.com/...
wikitext
text/x-wiki
==Weather==
Australia
[http://www.bom.gov.au Bureau of Meteorology]
[http://www.essentialenergy.com.au/content/stormtracker Storm Tracker]
==Astronomy==
http://www.heavens-above.com/
See also: [[WebLinks]], [[Cities]]
c72e17e59d26b0a5aad01b4a38082785559efecb
Links:Travel
0
19
38
32
2011-08-30T03:35:26Z
Admin
1
wikitext
text/x-wiki
A collection of various Travel Links
==Airports==
[http://www.sydneyairport.com.au/ Sydney, Australia]
[http://www.hongkongairport.com/eng/index.html Hong Kong]
[http://www.schiphol.nl/ Amsterdam, Netherlands]
==Train Networks==
[http://www.cityrail.info/ CityRail NSW, Australia]
[http://www.ns.nl/ NS, Netherlands]
==Miscellaneous==
[http://www.x-rates.com/ Exchange Rates]
[http://www.timeanddate.com/worldclock/ World Times]
See also: [[Cities]], [[WebLinks]]
d45cf01de36ad8ead5059344e6051d4deb36574f
Cities
0
23
39
2011-08-30T03:35:39Z
Admin
1
New page: ==Europe== The Netherlands * [[Groningen]] ==Oceania== Australia * [[Newcastle]] See also:[[WebLinks]], [[Links:Sky and Weather]]
wikitext
text/x-wiki
==Europe==
The Netherlands
* [[Groningen]]
==Oceania==
Australia
* [[Newcastle]]
See also:[[WebLinks]], [[Links:Sky and Weather]]
f22ab35ed7a971c38272ae822347015b8961158d
Links:Electronics
0
18
40
31
2011-08-30T03:36:35Z
Admin
1
wikitext
text/x-wiki
* Manufacturers
Atmel (AVR)
http://www.atmel.com/products/avr
Microchip (PIC)
http://www.microchip.com/
Phoenix Contact Australia
http://www.phoenixcontact.com.au/
* Retail Sales
Jaycar
http://www.jaycar.com.au/
Dick Smith Electronics
http://www.dse.com.au/
* Electronics Forums
OzElecForum
http://www.ozelecforum.com/
AVR Freaks
http://www.avrfreaks.net/
See also: [[Datasheets]], [[WebLinks]]
Electronics
[[Electronics_Projects]]
See also: [[Links:Electronics]]
7f069bca93a2b34800f9e65faf51e5ce6e640bfc
File:ATtiny85.pdf
6
26
43
2011-08-30T03:55:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-schematic.PNG
6
28
49
2011-08-30T04:06:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-pcb-top-assy.PNG
6
29
51
2011-08-30T04:08:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:ATtiny84.pdf
6
30
53
2011-08-30T05:44:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:ATmega328.pdf
6
31
54
2011-08-30T05:44:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DS1820.pdf
6
32
55
2011-08-30T05:46:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DS18S20.pdf
6
33
56
2011-08-30T05:46:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:74HC595.pdf
6
34
57
2011-08-30T05:47:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SD1602G.pdf
6
35
59
2011-08-30T05:48:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nokia5110-LCD.pdf
6
36
60
2011-08-30T05:49:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:I2C-UM10204.pdf
6
37
61
2011-08-30T05:49:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Mcu 0055 Rs232-tempsensor 2011-08-02.tar.gz
6
38
62
2011-08-30T05:52:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:CP210x VCP Win XP S2K3 Vista 7.zip
6
39
64
2011-08-30T05:55:56Z
Admin
1
CP210x USB to UART Bridge VCP Drivers
The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host u
wikitext
text/x-wiki
CP210x USB to UART Bridge VCP Drivers
The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the USBXpress direct access driver.
Download for Windows XP/Server 2003/Vista/7 (v6.4)
The CP210x Manufacturing DLL and Runtime DLL have been updated and must be used with v6.0 and later of the CP210x Windows VCP Driver. Application Note Software downloads affected are AN144SW.zip, AN205SW.zip and AN223SW.zip. If you are using a 5.x driver and need support you can download archived Application Note Software.
46d7e048c2f662ee7689b64431eedf0ac970313a
File:Mcu 0050 tempsensor 20110601.tar.gz
6
41
68
2011-08-30T05:58:27Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DIP8.jpg
6
42
70
2011-08-30T06:04:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-ser-temps-board bot.JPG
6
43
72
2011-08-31T23:10:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-ser-temps-board side.JPG
6
44
73
2011-08-31T23:11:16Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-ser-temps-board top.JPG
6
45
74
2011-08-31T23:11:47Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-ser-temps-board usb.JPG
6
46
75
2011-08-31T23:12:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-lcd-i2c.jpg
6
49
81
2011-08-31T23:22:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-lcd-i2c clean.zip
6
50
83
2011-09-01T00:06:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Transfer contacts between iphone and android
0
52
86
2011-09-01T06:39:03Z
Admin
1
New page: * open itunes and connect iphone * set up ‘merge’ synchronise with windows address book * close itunes, disconnect iphone * open windows address book from ‘programs – accessories...
wikitext
text/x-wiki
* open itunes and connect iphone
* set up ‘merge’ synchronise with windows address book
* close itunes, disconnect iphone
* open windows address book from ‘programs – accessories’
* create a new folder on the desktop
* drag all contacts into the new folder (individual .vcf files will be created)
* copy all the contacts to the root directory of the sdcard (or transfer via bluetooth)
* on android phone, click ‘contacts’
* press the menu button, click ‘import / export’
* select ‘Import from SD card’
* select ‘Import all vCard files’ and press ‘OK’
5f2a4766150bdedcea6734f64a98e4232d5aa31b
Android apps
0
53
90
89
2011-09-01T06:44:51Z
Admin
1
wikitext
text/x-wiki
Handy Android apps:
[https://market.android.com/details?id=it.medieval.blueftp&hl=en Bluetooth OBEX file transfer]
[https://market.android.com/details?id=mobi.infolife.appbackup&feature=search_result App Backup & Restore]
3558285b8b3128f3febe776db8564d56fdf55871
Links:Computers and IT
0
17
91
87
2011-09-01T06:46:44Z
Admin
1
wikitext
text/x-wiki
Links relating to Computers and IT
http://www.securityfocus.com/
[[Android_apps]]
[[Basic_ssl_encryption]]
See also: [[WebLinks]]
7e8a091db246c7c55901ac7f5177c65a2510df0d
File:0051-bottom.jpg
6
55
93
2011-09-02T00:06:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-side-with-lcd.jpg
6
56
95
2011-09-02T00:06:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-top-bare.jpg
6
57
96
2011-09-02T00:07:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-top-with-lcd.jpg
6
58
97
2011-09-02T00:08:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Wikipost:Community Portal
4
59
106
105
2011-09-02T03:41:45Z
Admin
1
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
== ==
dbc4729d9899c12d93d3cddc90e70f3f796baa3b
Wikipost:About
4
60
107
2011-09-02T04:54:45Z
Admin
1
New page: Please use the blog for feedback: http://au-blogg.blogspot.com/ == ==
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
== ==
725d9652bfec832200e0fa41772587f8a540f53d
Talk:Mcu 0051-lcd-i2c-board
1
62
113
2011-09-03T04:36:31Z
Admin
1
Created page with " Please use the blog for feedback: http://au-blogg.blogspot.com/ == =="
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
== ==
13ead54ca0ccd0b241cc65c63c937b2cbf0e6be3
Wikipost talk:About
5
63
114
2011-09-03T10:14:20Z
Admin
1
Created page with " Please use the blog for feedback: http://au-blogg.blogspot.com/ == =="
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
== ==
3ab4bde37e7a566426802bdcedda175c033fa970
Talk:Main Page
1
64
118
117
2011-09-03T10:24:57Z
Admin
1
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
27c34c3b91b61dace5ef1cf0ba12ddaa85c0b922
File:0051-schematic.png
6
65
119
2011-09-07T03:39:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-schematic.pdf
6
66
122
2011-09-07T23:02:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-schematic.jpg
6
67
136
123
2011-09-07T23:19:33Z
Admin
1
uploaded a new version of "[[File:0051-schematic.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0057-lcd-i2c-eval-board.jpg
6
69
140
2011-09-11T23:40:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0057-lcd-i2c-eval-board diptrace.zip
6
70
142
2011-09-11T23:57:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
C Programs
0
71
145
2011-09-13T11:10:01Z
Admin
1
Created page with "Some of my Electronics projects work in a client-server type fashion where the Electronics project is enhanced by (or in some case cannot work without) some form of counterpart i…"
wikitext
text/x-wiki
Some of my Electronics projects work in a client-server type fashion where the Electronics project is enhanced by (or in some case cannot work without) some form of counterpart in the form of a piece of software that resides on another device (e.g. a PC running some kind of operating system).
657f49a664a4599d43e0462ac189306fd261d103
Programming Languages
0
73
150
2011-09-13T11:16:51Z
Admin
1
moved [[Programming Languages]] to [[Programs]]
wikitext
text/x-wiki
#REDIRECT [[Programs]]
997339ef039920f9e37e72924b5efe036dc7466b
Links:News
0
24
165
164
2011-09-13T11:29:32Z
Admin
1
wikitext
text/x-wiki
A Collection of News Links
* Science and Technology
http://slashdot.org/
http://www.gizmag.com/
* World News Organisations
http://www.abc.net.au
http://www.cnbc.com
See also: [[WebLinks]]
39074ad920b73871f7e325ea5236f623a85d03f3
Wikipost:General disclaimer
4
7
168
167
2011-09-13T11:32:50Z
Admin
1
wikitext
text/x-wiki
No Guarantee of Validity
The contents of all material available on marcelpost.com are intended to provide useful information for its viewers.
While we make every effort to present accurate and reliable information in its services, we does not endorse, approve, or certify such information, nor does it guarantee the accuracy, completeness, efficacy, timeliness, or correct sequencing of such information. Information on this site may or may not be current as of the date of your access, and we have no duty to update and maintain the information, reports, or statements on the Services. Additionally, the information on this site may be changed periodically without prior notice. All content on this site is provided "as is." Use of such information is voluntary, and reliance on it should only be undertaken after an independent review of its accuracy, completeness, efficacy, and timeliness. Additionally, please note that this site is a community-based question-and-answer service using the "wiki" approach of developing answers that the community constantly improves. For some pages we allow ANYONE at any time to write and edit content on this site.
None of the licensors, contributors, sponsors, administrators, or anyone else connected with this site in any way whatsoever can be responsible for the appearance of any inaccurate information or for your use of the information contained in or linked from this site.
External Links
We also provides external links to other websites. We make no representation whatsoever regarding the content of any other websites that you may access from this site. We have no control over the content of these websites and cannot guarantee the reliability or accuracy of any information linked externally.
No Professional Advice
We provide professional information for informational purposes only, which should not be construed as advice. No action should be taken based upon any information contained on this site. You should seek independent professional advice from a person who is licensed and/or knowledgeable in the applicable area before acting upon any opinion, advice, or information contained on this site.
06d955b2561923b26103c25e53c2a0446d4a7ad7
File:Diptrace Libraries mpost 2011-09-14.zip
6
76
171
2011-09-14T12:07:47Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Diptrace
0
75
172
170
2011-09-14T12:08:43Z
Admin
1
wikitext
text/x-wiki
Diptrace is the program I use these days for designing my circuits and PCB's.
The software is available as a freeware version with support for up to 500 pads, which is (for the moment) more than enough for me.
For more information on diptrace:
http://www.diptrace.com/
Diptrace has many component libraries but I've also created one of my own that I'm happy to share here.
[[File:Diptrace Libraries mpost 2011-09-14.zip]]
946f53bfc17e3530ba2ff498eb1a1ac3b98bea7e
File:I2c-demo.swf
6
77
173
2011-09-15T23:11:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Blank:mcu project
0
81
275
2011-09-19T11:36:36Z
Admin
1
Created page with "{{Infobox | name = projectname | image = [[Image:blank.jpg|150px]] | imagecaption = description | author = Marcel Post | mcu = mcu_type | initial_release_date = Month Year | last…"
wikitext
text/x-wiki
{{Infobox
| name = projectname
| image = [[Image:blank.jpg|150px]]
| imagecaption = description
| author = Marcel Post
| mcu = mcu_type
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = n
| project_status = status
}}
Short description
<br> <br>
==Description==
==Timeline==
==Schematic==
==Circuit Board==
==Software==
Latest source code:
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
181af2d318331a870171bce7fb041b7cf3439b51
File:0051-sch-v1.0.JPG
6
85
286
2011-09-21T10:35:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-I2C-LCD-board-v1.0.zip
6
86
290
2011-09-21T10:44:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IC-SOIC8.jpg
6
88
313
2011-09-22T10:51:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Infobox
10
79
325
268
2011-09-22T11:16:09Z
Admin
1
wikitext
text/x-wiki
<table class="infobox" align="right" bgcolor="#E1E1E1" style="width:20em; font-size:90%; text-align:left; margin:10px; border-spacing:5px 5px; border: 1px #c0c0c0 solid;">
<tr>
<td colspan="2" bgcolor="#E1E1E1" style="text-align:center; font-size:110%"><b>{{{name}}}</b></td>
<tr>
<td colspan="2" style="text-align:center;" bgcolor="#FFFFFF">{{{image}}}</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF" style="text-align:center;">{{{imagecaption}}}</td>
</tr>
<tr>
<td colspan="2" bgcolor="#E1E1E1" style="text-align:center;"><b>Project Details</b></td>
</tr>
<tr>
<th>Author</th>
<td>{{{author}}}</td>
</tr>
<tr>
<th>MCU</th>
<td>{{{mcu}}}</td>
</tr>
<tr>
<th>Initial Release</th>
<td>{{{initial_release_date}}}</td>
</tr>
<tr>
<th>Last Modified</th>
<td>{{{last_modified_date}}}</td>
</tr>
<tr>
<th>PCB Layers</th>
<td>{{{pcb_layers}}}</td>
</tr>
<tr>
<th>Status</th>
<td>{{{project_status}}}</td>
</tr>
<tr>
<th>Category:</th>
<td>{{{category}}}</td>
</tr>
</table>
8a91be6ba1927e479e48a769d230baa453ac53fd
Mcu 0058-ATtiny85-eval-board
0
90
326
323
2011-09-22T11:16:37Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = ATtiny85 eval board
| image = [[Image:blank.jpg|150px]]
| imagecaption = no image yet
| author = Marcel Post
| mcu = ATyiny85
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
The idea is to have a small form factor evaluation board that has room for a few basic components:
* ATtiny85 (8 pin)
* power socket
* small section of blank pads (perhaps 10x10)
* some LED's
* ICSP connector
* small pushbutton
<br> <br>
==Description==
==Timeline==
==Schematic==
==Circuit Board==
==Software==
Latest source code:
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
9d3acfc536bce45d0cf984e6e9102d695a352e73
Mcu 0052-i2c-master
0
61
334
112
2011-09-22T11:31:49Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0052-i2c-master
| image = [[Image:blank.jpg|150px]]
| imagecaption = no image yet
| author = Marcel Post
| mcu = ATtiny85
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
A very simple board that acts as an I2C master. I designed it to test my I2C display boards. It just outputs some random data but it should be re-designed fairly simply to act as a somewhat more intelligent device.
<br> <br>
==Description==
==Timeline==
==Schematic==
==Circuit Board==
==Software==
Latest source code:
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
374abe47b378d4942bd30ebb77e0705b20d5bbae
Mcu 0056-nokia-48x84-i2c-board
0
89
335
321
2011-09-22T11:33:22Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0056-nokia-48x84-i2c-board
| image = [[Image:blank.jpg|150px]]
| imagecaption = no image yet
| author = Marcel Post
| mcu = ATtiny84
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
The idea is to have a small nokia display attached to a 14-pin ATtiny84 mcu.
<br> <br>
==Description==
This board will comfortably drive the display plus have a few pins left for other projects.
This could be the basis for an eval board with display but for the moment I just have the use for an I2C display.
It will be very similar to [[mcu_0051-lcd-i2c-board]] but now with a bigger display doing full graphics.
No schematic nor prototype currently exist.
==Timeline==
==Schematic==
==Circuit Board==
==Software==
Latest source code:
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
e5531c6835d07b4015f4a8272a02eba167580158
Mcu 0057-lcd-i2c-eval-board
0
68
337
336
2011-09-22T11:36:06Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0050-ds1820-tempsensor
| image = [[Image:blank.jpg|150px]]
| imagecaption = no image yet
| author = Marcel Post
| mcu = ATtiny85
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
Display board for I2C.
<br> <br>
==Description==
Similar to 0051 but with an AVR ATtiny84 (14 pin mcu) where all data pins are brought out to the front of a small work area of 6x25 pads)
==Timeline==
==Schematic==
Schematic and pcb files (diptrace)
[[File:0057-lcd-i2c-eval-board diptrace.zip]]
==Circuit Board==
[[File:0057-lcd-i2c-eval-board.jpg]]
Other boards I'm currently designing: [[Pending_PCB_manufacturing]]
==Software==
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
c17ec015c382ccd8a80dd8eae8b31c1dece7c3ec
Miscellaneous-linux-info
0
93
344
2011-09-28T22:30:32Z
Admin
1
Created page with "Bits of Linux information that is either too short to deserve their own page or it simply doesn't fit any other category. ==bash shell arithmetic== ==turn off console and xte…"
wikitext
text/x-wiki
Bits of Linux information that is either too short to deserve their own page or it simply doesn't fit any other category.
==bash shell arithmetic==
==turn off console and xterm beeps and sounds==
2567472a7dbde0ccc3261664f5b667283e6fd8ee
File:Dirsync-1.0.tar.gz
6
96
348
2011-09-28T22:58:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Dirsync
0
95
352
351
2011-09-29T00:22:13Z
Admin
1
wikitext
text/x-wiki
Dirsync is a script I wrote to synchronise directories when a system boots up or shuts down.
Background
To provide some basic network functionality (DNS, logging stats, a webserver, etc..) I used to run Debian on a Linksys NSLU2 for many years. The NSLU2 is a small device, fanless with an internal Disk-on-chip (flash) for storing the original Operating System (with Debian it's running off a 1GB USB flash drive). Around June 2010 I upgraded to a more powerful alternative, the Sheeva Plug. Small, fanless, internal flash and an SDCard slot (from which I'm running the O/S). I leave these machines running 24/7 and I want them to be quiet and consume as little power as possible. I therefore use an SDCard to place the O/S on. Since SDCards fail much faster than spinning HDD's during normal operation I make sure the system is optimised to write as little to the disk as possible. Most logging is turned off, I make extensive use of RAM filesystems (ramfs) and for additional (non-O/S) data storage I use a 2.5" USB HDD (which spins down and powers off after so many minutes of inactivity).
For logging some system statistics I use rrdtool and to prevent rrdtool from constantly writing to the SDCard flash I put the datbase file (.rrd) in a RAM filesystem.
My main reason for writing this script is because I didn't want to lose my .rrd files every time the system shuts down.
This script will sync from one directory to another (saving the .rrd from /dev/shm/rrd to /var/lib/rrd) when the system shuts down and copies it back (restoring the database back to /dev/shm/rrd) upon system boot up.
The script also has an 'update' feature which updates to the backup directory (to /var/lib/rrd in this example) to make sure we don't lose too much information in case the server shuts down without going through the normal shutdown procedure (e.g. in case of a power outage). I run the 'update' feature only once a week, which is the trade off between losing database information and losing the SDCard due to extensive write cycles.
Latest version: [[File:Dirsync-1.0.tar.gz]]
http://www.globalscaletechnologies.com/p-22-sheevaplug-dev-kit-us.aspx
http://en.wikipedia.org/wiki/SheevaPlug
http://en.wikipedia.org/wiki/NSLU2
http://www.nslu2-linux.org/
af9d624fc3e3797889667db371235818e98867da
Wifi-startstop
0
97
355
354
2011-09-29T00:34:15Z
Admin
1
wikitext
text/x-wiki
This script uses the 'expect' program to interact with my router to automatically start and stop the Wi-Fi.
To automatically initiate either a start or a stop I have the following crontab entries:
<pre>#start wireless at 18:30 during weekdays
30 18 * * 1-5 /root/bin/start-wifi.sh > /dev/null 2>&1
#turn off wireless at 23:00 every day
0 23 * * * /root/bin/stop-wifi.sh > /dev/null 2>&1
</pre>
==Wi-Fi Start==
The start-wifi.sh script contains the following lines:
<pre>#!/bin/sh
EXPECT=/usr/bin/expect
EXP_SCRIPT=/root/bin/wifi-start.exp
LOG=/dev/shm/expect.log
if $EXPECT -f $EXP_SCRIPT
then
echo "`date` Wireless Network started by Expect script" >> $LOG
else
echo "`date` Wireless Network already active" >> $LOG
fi
</pre>
The wifi-start expect script looks like this:
<pre>set timeout 5
set PASS "secretpw"
set ROUTER "http://192.168.0.1/xslt?PAGE=C04&THISPAGE=C01&NEXTPAGE=C04&DEVNAME=wave0"
set OPTIONS "-anonymous"
spawn /usr/bin/links $ROUTER $OPTIONS
expect {
"2701HGV-W" {
set CONTINUE 1
} timeout {
exit 1
}
}
#search for the password field
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
sleep 1
# enter password
send "$PASS"
# jump down to the submit button
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
#press enter
send "\r"
# acknowledge to post form data
#press enter
send "\r"
expect {
"You are about to enable the following " {
set CONTINUE 1
} timeout {
exit 1
}
}
sleep 1
# jump down to the confirm button
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
# press 'enter'
send "\r"
# acknowledge to post form data
#press enter
send "\r"
expect "Refresh"
# press enter to refresh the page
send "\r"
expect "View Network Summary"
exit 0
</pre>
==Wi-Fi Stop==
The stop-wifi.sh script contains the following lines:
<pre>#!/bin/sh
EXPECT=/usr/bin/expect
EXP_SCRIPT=/root/bin/wifi-stop.exp
LOG=/dev/shm/expect.log
if $EXPECT -f $EXP_SCRIPT
then
echo "`date` Wireless Network stopped by Expect script" >> $LOG
else
echo "`date` Wireless Network already disabled" >> $LOG
fi
</pre>
The wifi-stop expect script looks like this:
<pre>set timeout 5
set PASS "secretpw"
set ROUTER "http://192.168.0.1/xslt?PAGE=C04&THISPAGE=C01&NEXTPAGE=C04&DEVNAME=wave0"
set OPTIONS "-anonymous"
spawn /usr/bin/links $ROUTER $OPTIONS
expect {
"2701HGV-W" {
set CONTINUE 1
} timeout {
exit 1
}
}
#search for the password field
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
sleep 1
# enter password
send "$PASS"
# jump down to the submit button
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
#press enter
send "\r"
# acknowledge to post form data
#press enter
send "\r"
expect {
"You are about to disable the following " {
set CONTINUE 1
} timeout {
exit 1
}
}
sleep 1
# jump down to the confirm button
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
send -- "\033\[B"
# press 'enter'
send "\r"
# acknowledge to post form data
#press enter
send "\r"
expect "Refresh"
# press enter to refresh the page
send "\r"
expect "View Network Summary"
exit 0
</pre>
f33388327f031fb5ef8d5725cb1bd90b1225690c
File:Samba-dc.tar.gz
6
98
356
2011-09-29T01:35:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Dcadmin.tar.gz
6
99
359
2011-10-07T05:54:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-20111007.jpg
6
100
361
2011-10-07T11:30:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Dcadmin-2011-10-10.tar.gz
6
101
363
2011-10-11T21:33:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Samba-domain-controller
0
94
365
364
2011-10-11T21:37:41Z
Admin
1
wikitext
text/x-wiki
With help from http://www.howtoforge.com/samba_setup_ubuntu_5.10_p5 I successfully set up a Samba based Windows Domain Controller.
It supports roaming profiles, user and machine accounts, shared folders, home folders and printing.
To ease management of user accounts I am writing a few scripts and a php back end.
What works:
* adding new user accounts
* reset account passwords
* lock user accounts
* delete user accounts
What doesn't work yet:
Domain operations:
* changing the domain name
* changing the name of the main user account
* changing the dcadmin web password
Latest version: [[File:Dcadmin-2011-10-10.tar.gz]]
e67e8c4c456c2336eb465526a87ed60cca051928
File:2009-09-23 0705 cimg0162.jpg
6
103
369
2011-10-14T09:54:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0706 cimg0163.jpg
6
105
371
2011-10-14T09:58:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0711 cimg0164.jpg
6
106
373
2011-10-14T10:00:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0740 cimg0165.jpg
6
107
374
2011-10-14T10:02:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0801 cimg0167.jpg
6
109
379
2011-10-14T10:12:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0813 cimg0168.jpg
6
110
380
2011-10-14T10:21:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2009-09-23 0744 cimg0166.jpg
6
108
383
377
2011-10-14T10:27:11Z
Admin
1
uploaded a new version of "[[File:2009-09-23 0744 cimg0166.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Dust-storms-23-sep-2009
0
104
385
384
2011-10-14T10:31:21Z
Admin
1
wikitext
text/x-wiki
On 23 September 2009 I woke up and noticed something weird outside.
Most of my blinds were closed but everything had a bit of an orange tint to it.
When I opened up the blinds I couldn't believe what I saw.
Everything was orange!
[[File:2009-09-23 0705 cimg0162.jpg|none]]
Right outside my window, looking at the neighbour's place.
A huge sand storm had blown up sand from the Australian outback right across the east coast of New South Wales.
The scenery was familiar but soo weird!
I opened up the blinds at the back of the house and again, everything had an orange tint to it!
[[File:2009-09-23 0706 cimg0163.jpg|none]]
Looking at our backdoor neighbours.
No-one would ever believe me if I don't show some real white fluoro light in these pictures.
[[File:2009-09-23 0711 cimg0164.jpg|none]]
From my kitchen window, just to show that white light still exists..
Not knowing what else to do, I prepared my lunch and had my breakfast as usual and went to drive to work.
Everything was orange..
[[File:2009-09-23 0740 cimg0165.jpg|none]]
Just leaving my driveway and off to work..
Everyone was driving with their headlights on and it was misty.
[[File:2009-09-23 0744 cimg0166.jpg|none]]
Driving out of town, waiting for the train crossing to clear..
On the highway everyone was driving slowly..
[[File:2009-09-23 0801 cimg0167.jpg|none]]
Driving along the road I normally take felt very odd this day..
Arriving at work it was very strange to see everthing inside a bright white whilst looking outside the sky was still very orange.
[[File:2009-09-23 0813 cimg0168.jpg|none]]
View from outside my office that morning.
After a few hours most of the dust just blew away and all the colours returned back to normal. By the time I drove home that day I couldn't tell what happened that morning.
a6fb2aac3559745eebdb281625e79e4ef4f1d85d
File:0051-pcb-20111018.jpg
6
111
386
2011-10-18T09:59:46Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-v1.0.JPG
6
83
389
288
2011-10-18T10:05:32Z
Admin
1
uploaded a new version of "[[File:0051-pcb-v1.0.JPG]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-3d-20111019.jpg
6
113
392
2011-10-18T21:46:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-20111019.jpg
6
114
393
2011-10-18T21:46:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-schem.JPG
6
117
401
2011-10-23T03:08:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-pcb.JPG
6
118
403
2011-10-23T03:10:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-sch-1.0.pdf
6
119
415
2011-10-23T09:00:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-sch-1.0.JPG
6
120
417
2011-10-23T09:04:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-pcb-3d-v1.0.jpg
6
122
425
2011-10-31T06:24:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-pcb-v1.0.jpg
6
123
427
2011-10-31T06:25:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-sch-v1.0.jpg
6
124
428
2011-10-31T06:26:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-sch-v1.0.pdf
6
125
429
2011-10-31T06:27:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0053-avr-fuse-resetter.zip
6
116
436
399
2011-11-02T08:50:15Z
Admin
1
uploaded a new version of "[[File:0053-avr-fuse-resetter.zip]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0059-pcb-3d-v1.0.JPG
6
126
437
2011-11-02T09:00:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0059-pcb-v1.0.JPG
6
127
438
2011-11-02T09:01:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0059-sch-v1.0.JPG
6
128
439
2011-11-02T09:02:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0059-sch-v1.0.pdf
6
129
440
2011-11-02T09:04:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0059-ATtiny84-eval-board
0
91
441
329
2011-11-02T09:04:54Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = ATtiny84 eval board
| image = [[Image:blank.jpg|150px]]
| imagecaption = no image yet
| author = Marcel Post
| mcu = ATyiny84
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
The idea is to have a small form factor evaluation board that has room for a few basic components:
* ATtiny84 (14 pin)
* power socket
* small section of blank pads (perhaps 10x10)
* some LED's
* ICSP connector
* small pushbutton
<br> <br>
==Description==
==Timeline==
==Schematic==
[[File:0059-sch-v1.0.JPG|thumb|none]]
View schematic as pdf (Oct 2011) [[File:0059-sch-v1.0.pdf]]
==Circuit Board==
[[File:0059-pcb-3d-v1.0.JPG|none]]
This is a very first design, it will most certainly change over time but in the end I hope it is going to look something like this.
[[File:0059-pcb-v1.0.JPG|none]]
Just the bare bones pcb.
==Software==
Latest source code:
==Release Notes==
==Gallery==
==External Links==
http://www.atmel.com/avr/
f8ad6e78d8b3558815707c8a2a17749ff690948b
Mcu 0050-ds1820-tempsensor
0
132
449
2011-11-13T04:38:55Z
Admin
1
moved [[Mcu 0050-ds1820-tempsensor]] to [[Mcu 0050-handheld-tempsensor]]
wikitext
text/x-wiki
#REDIRECT [[Mcu 0050-handheld-tempsensor]]
b3f93b3038b12467e681da8577c9a2172d4b4a24
File:Tempsensor-pic16f84-01.jpg
6
136
462
2011-11-13T05:03:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Tempsensor-pic16f84-02.jpg
6
137
463
2011-11-13T05:04:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-3d-bottom-v1.0.JPG
6
138
467
2011-11-13T10:27:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-bottom-v1.0.JPG
6
139
468
2011-11-13T10:29:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-sch-bottom-v1.0.JPG
6
140
469
2011-11-13T10:30:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-sch-top-v1.0.pdf
6
135
470
459
2011-11-13T10:32:05Z
Admin
1
uploaded a new version of "[[File:0050-sch-top-v1.0.pdf]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-3d-top-v1.0.JPG
6
141
472
2011-11-13T11:11:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-3d-top copper-v1.0.JPG
6
142
473
2011-11-13T11:12:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-top-v1.0.JPG
6
143
475
2011-11-13T11:14:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-final-3d.jpg
6
145
482
2011-11-18T12:10:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-pcb-3d-v1.0.JPG
6
146
484
2011-11-18T12:12:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-pcb-3d-v1.0 back.JPG
6
147
485
2011-11-18T12:21:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-pcb-v1.0.JPG
6
148
487
2011-11-18T12:24:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-sch-v1.0.JPG
6
149
488
2011-11-18T12:26:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-sch-v1.0.pdf
6
150
489
2011-11-18T12:28:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:10168-05.jpg
6
152
514
2011-11-19T05:00:32Z
Admin
1
Sparkfun Nokia 3310 LCD breakout board
wikitext
text/x-wiki
Sparkfun Nokia 3310 LCD breakout board
4f2cc31388a501cf930240963a1805b81ede839a
File:0050-pcb-3d-v1.0.JPG
6
153
516
2011-11-20T05:49:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-v1.0.JPG
6
154
518
2011-11-20T05:50:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-sch-v1.0.JPG
6
155
520
2011-11-20T05:52:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Tempsensor-t84.jpg
6
157
525
2011-11-20T09:14:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-sch-v1.0.JPG
6
160
529
2011-11-22T22:11:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-sch-v1.0.pdf
6
161
530
2011-11-22T22:12:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-gerbers.zip
6
162
535
2011-11-23T01:07:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-gerbers-v1.0.zip
6
163
541
537
2011-11-23T21:57:16Z
Admin
1
uploaded a new version of "[[File:0055-gerbers-v1.0.zip]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-pcb-3d-v1.0.JPG
6
158
545
543
2011-11-23T22:21:10Z
Admin
1
uploaded a new version of "[[File:0055-pcb-3d-v1.0.JPG]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-pcb-v1.0.JPG
6
159
546
544
2011-11-23T22:21:32Z
Admin
1
uploaded a new version of "[[File:0055-pcb-v1.0.JPG]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-3d-v1.0.jpg
6
133
551
547
2011-11-26T07:51:35Z
Admin
1
uploaded a new version of "[[File:0050-pcb-3d-v1.0.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-pcb-v1.0.jpg
6
164
552
548
2011-11-26T07:52:22Z
Admin
1
uploaded a new version of "[[File:0050-pcb-v1.0.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-sch-v1.0.jpg
6
134
553
454
2011-11-26T07:53:11Z
Admin
1
uploaded a new version of "[[File:0050-sch-v1.0.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-sch-v1.0.pdf
6
156
554
521
2011-11-26T07:54:06Z
Admin
1
uploaded a new version of "[[File:0050-sch-v1.0.pdf]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0050-gerbers-v1.0.zip
6
165
555
2011-11-26T07:54:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0062-gerbers-v1.0.zip
6
151
558
503
2011-11-26T08:52:27Z
Admin
1
uploaded a new version of "[[File:0062-gerbers-v1.0.zip]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-gerbers.zip
6
166
559
2011-11-27T03:29:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-3d-v1.0.jpg
6
167
561
2011-11-27T03:42:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-pcb-v1.0.jpg
6
168
562
2011-11-27T03:43:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-sch-v1.0.pdf
6
84
564
285
2011-11-27T03:48:30Z
Admin
1
uploaded a new version of "[[File:0051-sch-v1.0.pdf]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-sch-v1.0.jpg
6
169
565
2011-11-27T03:48:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0050-handheld-tempsensor
0
40
573
572
2011-11-27T10:33:00Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0050-ds1820-tempsensor
| image = [[File:Tempsensor-t84.jpg|150px]]
| imagecaption = prototype
| author = Marcel Post
| mcu = ATtiny85
| initial_release_date = Month Year
| last_modified_date = Month Year
| pcb_layers = 2
| project_status = in development
| category = [[Electronics]]
}}
DS18S20 based Handheld Temperature sensor, for use with [[Mcu 0062-LCD-48x84-RC-Enclosure-top-pcb]].
<br> <br>
==Description==
Years ago I started a similar project, creating a hand-held temperature sensor using a PIC16F84 with four 7-segment displays. The original project still works very well but I would like some more features added, such as:
* better display (using the Nokia 48x84 monochrome LCD instead of four 7-segment displays)
* support for multiple DS1820 sensors using the one-wire protocol
* better accuracy (PIC-based device has half-degree accuracy, this device will have 2 decimals accuracy)
* optimising the code to get the most out of battery life (current PIC-based device does 2.7mA @ 3.09V, early tests show I can get down to 1.95mA, that's about 25% better)
* store values (data logging) using EEPROM over i2c and graphical display of past values and trends
* setting thresholds and signaling over and under-temperature events (for use as a thermostat)
* wireless transmission of (stored) values
One of my preferences for this project is to design custom PCB's that fits inside the Jaycar HB5610 Remote Control Enclosure.
The code for this project also formed the basis for [[mcu_0055-rs232-tempsensor]].
[[File:Tempsensor-pic16f84-01.jpg]]
[[File:Tempsensor-pic16f84-02.jpg]]
The original project, based on the PIC16F84 using four 7-segment displays and running off two 1.5V AA batteries.
==Timeline==
* 2011-11-27 Ordered 1x PCB with BatchPCB. Only after the boards have arrived, built up and tested I will post relevant firmware on this page. Until then!
* 2011-11-18 Decided to make the top-half a stand-alone project for use with other projects if required. See [[Mcu 0062-LCD-48x84-RC-Enclosure-top-pcb]].
* 2011-11-13 Practically finalised the design for the top-half pcb with the LCD and buttons
* 2011-11-03 Did up a design in diptrace for the RC Enclosure internals.
* 2011-10-01 Got the DS1820 one-wire code working on ATtiny85
==Schematic==
This project is designed to fit in the enclosure's bottom half (with battery compartment).
[[File:0050-sch-v1.0.JPG|thumb|none]]
View schematic as pdf (Nov 2011) [[File:0050-sch-v1.0.pdf]]
==Circuit Board==
Bottom pcb with the mcu, eeprom, isp header and the on-board temperature sensor. Please note that these are not yet finished designs but I expect to be 90% there. One of the things I haven't tested yet is the clearance between the top and bottom pcb's once fitted inside the enclosure and see if it clashes with certain components.
[[File:0050-pcb-3d-v1.0.jpg|220px|none]]
The pcb for the bottom-half of the enclosure.
[[File:0050-pcb-v1.0.jpg|220px|none]]
see-through model of the bottom pcb.
Gerbers: [[File:0050-gerbers-v1.0.zip]]
==Software==
Latest source code: [[Image:Mcu 0050 tempsensor 20110601.tar.gz]]
==Release Notes==
==Gallery==
==External Links==
http://www.jaycar.com.au/productView.asp?ID=HB5610&form=CAT2&SUBCATID=986#1
http://www.atmel.com/avr/
c993ef2e9d0fa676c85897c682db74672b461d25
Mcu 0062-LCD-48x84-RC-Enclosure-top-pcb
0
144
577
576
2011-11-27T10:35:50Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = LCD pcb
| image = [[Image:0062-final-3d.jpg|150px]]
| imagecaption = 48x84 LCD Board
| author = Marcel Post
| mcu = (none)
| initial_release_date = 11-2011
| last_modified_date = 11-2011
| pcb_layers = 2
| project_status = design complete
| category = [[Electronics]]
}}
Multi-purpose top PCB for a Remote Control enclosure that has circuitry, holes, pushbuttons and connectors for a Nokia 3310/5510 48x84 pixels LCD.
<br> <br>
==Description==
This is a generic board with for LCD functionality to be mounted inside a plastic project box sold as a 'Remote Control' enclosure. The enclosure has mounting holes top and bottom and this pcb is to be mounted on the top half of the enclosure. Due to the basic functionality of this design it is an ideal addition to other projects requiring some kind of graphical interface. The LCD to be mounted on top of this PCB is the Nokia 3310/5510 breakout board that Sparkfun sells for about $10. There is room to mount three pushbuttons on the board and there are pads available to insert pull-down-to-ground resistors. The idea is to have the mcu pushbutton pins configured as inputs and pulled down to ground with the resistors on this board. When a button is pushed VCC sends the voltage to the input pin and a press is detected.
==Timeline==
* 2011-11-27 Ordered 2x PCB's with BatchPCB. Only after the boards have arrived, built up and tested I will post relevant firmware on this page. Until then!
* November 2011 Finished designing the pcb and updating this webpage with relevant artwork.
* November 2011 Finished writing the code to get the Nokia board working with an Atmel ATtiny84 mcu.
==Schematic==
The schematic is pretty simple. Visible are the pushbuttons with their individual pull-down resistors. They share VCC with the LCD.
[[File:0062-sch-v1.0.JPG|thumb|none]]
View schematic as pdf (Nov 2011) [[File:0062-sch-v1.0.pdf]]
==Circuit Board==
This is the final preview of the pcb before manufacturing.
I have placed the jumpers on the side so that an underlying project board can easily connect to the LCD board using ribbon cable.
[[File:0062-pcb-v1.0.JPG|220px|none]]
Top view of the display board in a semi-transparent way (groundplane visible)
Here is a 3d view of the board with the Nokia LCD fitted on top.
[[File:0062-pcb-3d-v1.0.JPG|220px]] [[File:0062-pcb-3d-v1.0 back.JPG|220px]]
Top and bottom view of the display board.
==Software==
Latest source code: (not appliccable)
Gerber files: [[File:0062-gerbers-v1.0.zip]]
==Release Notes==
Other boards I'm currently designing: [[Pending_PCB_manufacturing]]
==Gallery==
[[File:10168-05.jpg|none]]
The original Sparkfun breakout board for the Nokia 3310 monochrome LCD.
==External Links==
http://www.sparkfun.com/products/10168
http://www.arduino.cc/playground/Code/PCD8544
http://www.atmel.com/avr/
bd5eb78660b809221d37b020720c144d24c351e0
File:SkypeSetup.zip
6
171
605
2011-12-11T09:27:30Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
RealEstate
0
172
618
617
2011-12-14T22:44:41Z
Admin
1
wikitext
text/x-wiki
Real Estate links:
* http://www.mortgagechoice.com.au/calculators/home-loan-repayments-calculator.aspx Loan Repayment Calculator
752072536528c7cb6bd77209ede7b3a859929fab
Pcb run 01
0
170
629
628
2012-01-03T10:41:26Z
Admin
1
wikitext
text/x-wiki
PCB run 01
Started: 27 November 2011
<timeline>
ImageSize = width:700 height:575
DateFormat = dd/mm/yyyy
Period = from:26/11/2011 till:05/01/2012
PlotArea = width:550 height:525 left:50 bottom:25
TimeAxis = orientation:vertical
ScaleMajor = unit:day increment:1 start:26/11/2011
ScaleMinor = unit:day increment:1 start:26/11/2011
PlotData=
at:03/01/2012 fontsize:S text:"PCB's received in the mail (3 Jan 2012)"
at:01/01/2012 fontsize:S text:"-- 1 Jan 2012 --"
at:21/12/2011 fontsize:S text:"panel 1812 sent for production, 1790 sent to customers (21 Dec 2011)"
at:19/12/2011 fontsize:S text:"panel 1804 sent for production (19 Dec 2011)"
at:16/12/2011 fontsize:S text:"panel 1801 sent for production (16 Dec 2011)"
at:15/12/2011 fontsize:S text:"panel 1800 sent for production, 1788, 1771(!) sent to customers (15 Dec 2011)"
at:14/12/2011 fontsize:S text:"panel 1799 sent for production (14 Dec 2011)"
at:13/12/2011 fontsize:S text:"panel 1796 sent for production (13 Dec 2011)"
at:12/12/2011 fontsize:S text:"panel 1792, 1795 sent for production, panel 1772, 1775(!) sent to customers (12 Dec 2011)"
at:09/12/2011 fontsize:S text:"panel 1791 sent for production, panel 1769 sent to customers (9 Dec 2011)"
at:08/12/2011 fontsize:S text:"panel 1790 sent for production, panel 1767 sent to customers (8 Dec 2011)"
at:07/12/2011 fontsize:S text:"panel 1788 sent for production, panel 1762 sent to customers (7 Dec 2011)"
at:05/12/2011 fontsize:S text:"panel 1777, 1783 sent for production (5 Dec 2011)"
at:01/12/2011 fontsize:S text:"-- 1 Dec 2011 --"
at:30/11/2011 fontsize:S text:"panel 1756 shipped to customers (30 Nov 2011)"
at:29/11/2011 fontsize:S text:"my designs panelized on board 1771 and sent out for production (29 Nov 2011)"
at:27/11/2011 fontsize:S text:"designs submitted to BatchPCB (27 Nov 2011)"
</timeline>
* 15 Dec 2011 - (t+18) Received confirmation that my board has been shipped to me.
* 12 Dec 2011 - (t+15) Even though my board number is less than the latest shipped board I still see my order status as 'Processing'. This could either mean that board 1772 has just shipped out before mine or that the status in my order overview hasn't been updated yet.
* 29 Nov 2011 - (t+2) Designs panelised and sent for production.
* 27 Nov 2011 - (t+0) Submitted my designs online with BatchPCB.
29b34059a266c5f2fbd924d4c1a13b41290fd6a3
File:0051-firmware v1.0.zip
6
173
632
2012-01-19T21:03:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
ATtiny85 shiftout
0
176
657
656
2012-02-07T03:32:15Z
Admin
1
wikitext
text/x-wiki
In an attempt to port some code originally written for Arduino I came across a function that doesn't seem to be supported on AVR-GCC. I hope I just haven't found the library yet but in any case, here's some code to produce the same function.
<pre>
#define HIGH 1
#define LOW 0
void shiftOut(byte dataPin, byte clockPin, byte bitOrder, byte value)
{
int i;
for (i = 0; i < 8; i++)
{
if (bitOrder == LSBFIRST)
{
digitalWrite(dataPin, !!(value & (1 << i)));
} else {
digitalWrite(dataPin, !!(value & (1 << (7 - i))));
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}
</pre>
See also:
http://arduino.cc/en/Reference/ShiftOut
[[C and C++]]
4e2347ddf8848b20b4ed921586c0c675574e7149
Data Types
0
178
673
672
2012-02-08T09:18:17Z
Admin
1
wikitext
text/x-wiki
Integer types having exactly the specified width
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Short</b>
|style="background-color:#f2f2f2;"|<b>Size</b>
|style="background-color:#f2f2f2;"|<b>Range</b>
|-
|typedef signed char
|int8_t
|1 byte
| -128 to 127
|-
|typedef unsigned char (aka byte)
|uint8_t
|1 byte
|0 to 255
|-
|typedef signed short
|
|2 bytes
| -32768 to 32767
|-
|typedef unsigned short
|
|2 bytes
|0 to 65535
|-
|typedef signed int
|int16_t
|2 bytes
| -2147483648 to 2147483647
|-
|typedef unsigned int
|uint16_t
|2 bytes
|0 to 4294967295
|-
|typedef signed long int
|int32_t
|4 bytes
| -2147483648 to 2147483647
|-
|typedef unsigned long int
|uint32_t
|4 bytes
|0 to 4294967295
|-
|typedef signed long long int
|int64_t
|8 bytes
|
|-
|typedef unsigned long long int
|uint64_t
|8 bytes
|
|-
|typedef float
|
|4 bytes
| +/- 3.4e +/- 38 (~7 digits)
|-
|typedef double
|
|8 bytes
| +/- 1.7e +/- 308 (~15 digits)
|}
short int (short) Short Integer. 2bytes signed: -32768 to 32767
unsigned: 0 to 65535
int Integer. 4bytes signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
long int (long) Long integer. 4bytes signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
bool Boolean value. It can take one of two values: true or false. 1byte true or false
float Floating point number. 4bytes +/- 3.4e +/- 38 (~7 digits)
double Double precision floating point number. 8bytes +/- 1.7e +/- 308 (~15 digits)
long double Long double precision floating point number. 8bytes +/- 1.7e +/- 308 (~15 digits)
wchar_t Wide character. 2 or 4 bytes 1 wide character
See also:
* http://www.nongnu.org/avr-libc/user-manual/group__avr__stdint.html
* http://www.cplusplus.com/doc/tutorial/variables/
1c55de54bcf117d3679d115a78c7ddd35079fa46
File:Easycomm.txt
6
179
674
2012-04-25T04:19:36Z
Admin
1
Easycomm1 and easycomm2 protocol definition for az/el (Azimuth Elevation, or pan tilt) two-axis rotors.
wikitext
text/x-wiki
Easycomm1 and easycomm2 protocol definition for az/el (Azimuth Elevation, or pan tilt) two-axis rotors.
3e4da9da5b14cdcbdf84f33d4dda3d0c38727289
File:Predict-0.1beta1.zip
6
182
679
2012-04-29T22:11:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P1.jpg
6
183
683
2012-04-29T22:52:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P2.jpg
6
184
684
2012-04-29T22:53:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P3.jpg
6
185
686
2012-04-29T22:54:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P4.jpg
6
186
687
2012-04-29T22:54:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P5.jpg
6
187
688
2012-04-29T22:57:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P6.jpg
6
188
689
2012-04-29T22:58:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P7.jpg
6
189
690
2012-04-29T22:58:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Predict-0.1beta2.zip
6
191
701
698
2012-05-02T02:43:05Z
Admin
1
uploaded a new version of "[[File:Predict-0.1beta2.zip]]"
wikitext
text/x-wiki
with dedicated sun & moon page
c79d4dd18e4803bc498bdd0abb6bb97fcea8ecf0
File:Predict-launch-icon.png
6
194
708
2012-05-04T12:35:53Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:P8.jpg
6
196
715
2012-05-05T07:59:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Qrpredict 300x300.png
6
197
725
2012-05-05T11:09:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Predict-0.1beta3.apk
6
195
741
740
2012-05-11T01:38:12Z
Admin
1
uploaded a new version of "[[File:Predict-0.1beta3.apk]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Attiny84 large.pdf
6
198
780
2012-05-20T05:25:19Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Predict-0.1-beta4.apk
6
199
788
2012-05-21T21:58:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Predict-0.1beta4.apk
6
200
801
2012-05-22T11:22:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Predict
0
181
802
792
2012-05-22T11:23:12Z
Admin
1
wikitext
text/x-wiki
PREDICT is an open-source, multi-user satellite tracking and orbital prediction program written under the Linux operating system by John A. Magliacane, KD2BD. PREDICT is free software. Users may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License or any later version.
Link to the original Predict software: http://www.qsl.net/kd2bd/predict.html
This page is a collection of screenshots and a beta software release of my attempt to port the software to the Android smart-phone platform.
Below is a list of features that have been known to work:
* Orbital predictions for sun, moon and satellites
* Online updating of TLE (Two Line Element) data sets
* Observer location definitions
* Manually editing of TLE data
* Realtime tracking of sun, moon and satellites
* I2C output, using Sparkfun IOIO board, see http://www.sparkfun.com/products/10748
==Some screen shots==
[[File:P1.jpg|none]]
Main menu
[[File:P2.jpg|none]]
The realtime satellite tracking screen
[[File:P3.jpg|none]]
The Orbital Predictions screen. The 'map' button displays a top-view of the satellite trajectory over your location (see below).
[[File:P8.jpg|none]]
A graphical representation of the satellite pass over as seen from above.
[[File:P4.jpg|none]]
Page with the available TLE sources. Here you can manage which TLE sources the program should use when updating from the web.
[[File:P5.jpg|none]]
Here is where you define the TLE sources. They're basically links to text files where to find the TLE data.
[[File:P6.jpg|none]]
The actual TLE data can be manually added or edited.
[[File:P7.jpg|none]]
You can add location definitions to the program to easily switch between observer locations.
==Installing the program==
-either-
* Navigate to this web page using your android phone
* Find the latest version of the apk file and click on it.
* On the File:Predict.apk page click on the Predict.apk link (with the filesize, and MIME type application/zip)
-or-
* Scan the QR-code for the direct download link.
* Once the code has been recognised, select 'Open Browser'
(download should begin automatically and the file will be stored in your Downloads directory)
* Open your Android file browser and navigate to the Downloads directory.
* Find the file Predict.apk (the .apk extension may not be visible) and click it to install
* Press the 'Install' button
[[File:Predict-launch-icon.png]]
The predict icon once it's installed on your Android device.
Once the program has been installed:
* run Predict on your Android device.
* Update TLE data (Settings - TLE Sources - Update Active TLE's)
* Add your location (Settings - Locations - Add Location)
* Set the time zone (Settings - Time and Date)
==Latest version of the Predict for Android APK file==
* Predict for Android: [[File:Predict-0.1beta4.apk]]
* Direct download link to the latest Predict.apk software:
[[File:Qrpredict 300x300.png|none]]
Scan the above code to start the download.
==Features not implemented (yet)==
* multi-satellite tracking (it's going to be a real challenge to fit all the info on one screen!!)
* predicting of visible satellite passes
* night-colours scheme (switch to reddish colours for night-time usage of the program)
* digitised voice announcements (partially working)
* tcp/ip network master
* On-screen compass heading for quick satellite finding
* much, much more..
==Version History==
* Beta 4 (release date: 21 May 2012)
- Added NTP support to sync with Internet time
- Added 'First-Time Setup' page explaining the various functions
- Added 'Delete all Satellites' and 'Set all Active' in Satellites page
- Predict now communicates with the Sparkfun IOIO board and outputs realtime satellite coordinates as I2C
- Satellite and Location list menus are now alphabetically sorted
- Added build time to 'About' page
- Added alarm when satellite is above horizon in Realtime mode
- moved 'Set Active' checkbox in TLE page to the top of the page
* Beta 3 (release date: 5 May 2010)
- Program now uses conventional lat/lon locations (East of Greenwich is +, West is -).
- Location changes applied without having to restart program.
- Added QR-code for easy sharing.
- Realtime tracking now updates every 200ms.
- Added a 'First-Time Setup' page.
- Predict now only supports 'portrait' orientation
* Beta 2 (release date: 2 May 2012)
- Added dedicated page for sun and moon realtime data.
* Beta 1 (release date: 29 April 2012)
- First beta release, many functions still not complete.
- Realtime single satellite works, AOS and LOS not always updated.
fc98587fafd8e26e9f84db32d92b894b91ab6768
File:Angles.zip
6
202
811
2012-05-24T03:12:02Z
Admin
1
Angle trigonometry app in Java for Nokia phones
wikitext
text/x-wiki
Angle trigonometry app in Java for Nokia phones
2f6c973318edaa406934ba2f01c452c2cfeed624
File:Angles 1.jpg
6
203
814
813
2012-05-24T03:34:01Z
Admin
1
uploaded a new version of "[[File:Angles 1.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Angles 2.jpg
6
204
815
2012-05-24T03:34:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Nokia
0
205
818
2012-05-24T03:37:58Z
Admin
1
Created page with "Not much here, the only Java app I ever wrote for my Nokia phone as 'Angles', a simple trigonometry app that is used to calculate the distance to a point by measuring the angles …"
wikitext
text/x-wiki
Not much here, the only Java app I ever wrote for my Nokia phone as 'Angles', a simple trigonometry app that is used to calculate the distance to a point by measuring the angles to it.
Here's the app page: [[Angles]]
e482933661a154abc435e872b8e9152eec65b1ae
File:PIC16F84A.PNG
6
207
820
2012-05-24T03:43:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Assembler
0
206
822
821
2012-05-24T03:44:39Z
Admin
1
wikitext
text/x-wiki
[[File:PIC16F84A.PNG|none]]
In the world of microcontrollers I first got started with the Pic 16F84A. I developed several applications for it and all of them were programmed in assembler.
PIC microcontroller applications:
* [[Gettemp]]
* [[RTTY]]
df607cb231c72742635be806b366dde3e7fda5fb
Microcontrollers
0
208
824
823
2012-05-24T03:48:39Z
Admin
1
wikitext
text/x-wiki
==AVR (ATtiny84 & ATtiny85)==
See: [[Electronics]]
==PIC (mostly PIC16F84A)==
See: [[Electronics]]
==PC (x86)==
2420476b23e47442404afa79f177d15d6e36185c
PC
0
209
825
2012-05-24T03:50:07Z
Admin
1
Created page with " See: [[Linux_Bash]]"
wikitext
text/x-wiki
See: [[Linux_Bash]]
1da46888231cb07c1257978e5fa7d495a8700826
File:Predict.apk
6
193
826
800
2012-06-10T00:44:15Z
Admin
1
uploaded a new version of "[[File:Predict.apk]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Passwd.apk
6
210
833
832
2012-06-15T22:51:14Z
Admin
1
uploaded a new version of "[[File:Passwd.apk]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Talk:Java
1
212
848
2012-06-25T22:41:09Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
Talk:Programs
1
213
849
2012-06-25T22:41:36Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
Talk:Android
1
214
850
2012-06-25T22:42:12Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
Talk:Predict
1
215
851
2012-06-25T22:42:41Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
Talk:Electronics
1
216
852
2012-06-25T22:43:04Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
Talk:SafeNote
1
218
858
2012-06-26T12:12:08Z
Admin
1
Created page with "Please use the blog for feedback: http://au-blogg.blogspot.com/"
wikitext
text/x-wiki
Please use the blog for feedback:
http://au-blogg.blogspot.com/
085e24d7fae4510b75ede3ecc0c2709fd960be47
File:SafeListqr.png
6
222
880
2012-07-12T09:03:30Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist-ss1.PNG
6
223
887
2012-07-25T23:00:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist-ss2.PNG
6
224
888
2012-07-25T23:01:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist-ss3.PNG
6
225
889
2012-07-25T23:02:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist-icon.png
6
227
901
2012-07-27T10:30:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist icon.png
6
228
906
904
2012-07-27T11:01:56Z
Admin
1
uploaded a new version of "[[File:Safelist icon.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Safelist feature graphic small.jpg
6
230
912
2012-07-28T11:19:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0J1326.200.jpg
6
232
928
2012-08-04T07:38:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0J1324.200.jpg
6
233
929
2012-08-04T07:39:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Icsp-avr.PNG
6
235
934
2012-08-04T07:53:19Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0J1422.600.jpg
6
234
937
931
2012-08-04T09:27:39Z
Admin
1
uploaded a new version of "[[File:0J1422.600.jpg]]": pololu board with pinout
wikitext
text/x-wiki
pololu programmer
d212d8c67775710d6445b56154496adc3e7e24c7
File:Icsp-0051.JPG
6
236
940
2012-08-04T09:34:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Pololu programmer
0
231
944
943
2012-08-04T09:45:32Z
Admin
1
wikitext
text/x-wiki
The Pololu programmer is a USB-based programmer for AVR MCUs.
[[File:0J1326.200.jpg]]
[[File:0J1324.200.jpg]]
The device can be ordered from [http://www.pololu.com Pololu] or [http://www.robotgear.com.au RobotGear] and probably from many other places too.
Here's a direct link to the Pololu website for the [http://www.pololu.com/catalog/product/1300 Pololu USB AVR Programmer].
==Pinout==
[[File:0J1422.600.jpg]]
==In-Circuit Serial Programming==
In some of my circuit boards designs I include a set of header pins so I can easily program the MCU using the Pololu programmer and the 6-lead ribbon cable that's provided with it.
Here's an example for an ATtiny85 project:
[[File:0051-pcb-3d-v1.0.jpg]]
The complete board (an I2C-based LCD board).
[[File:Icsp-avr.PNG]]
Detail: just the ICSP pins on the PCB design.
[[File:Icsp-0051.JPG]]
What it looks like once the board is made.
One very important note:
* Make sure the mcu is powered by a voltage on its corresponding VCC pin. The pin on the header connector of the programmer that says 'VDD' is only there to detect that the chip has power connected to it. So it's a signal that goes back to the programmer rather than a VCC source going from the programmer to power the MCU. Fortunately the Pololu programmer has a row of pins, one of which (VBUS +5V) is a nice 5VDC power source straight from the PC's USB port. I added an extra lead from that pin as a separate lead along the ribbon cable to the end header connector. At the end of that single lead I soldered a header pin that I can easily plug into a breadboard on the MCU's VCC pin.
dd5b9f6607b1ba0ba8653966d61f5af5e403e654
Itemsoldout
0
238
951
2012-08-15T00:20:12Z
Admin
1
Created page with "Sorry, but the item you requested is sold out. Please check back later if the quantity of stock has been increased. We apologise for any inconvenience caused."
wikitext
text/x-wiki
Sorry, but the item you requested is sold out.
Please check back later if the quantity of stock has been increased.
We apologise for any inconvenience caused.
e691d80746a2e2e5f9bf9248f2691930ece79904
ATtiny85 PWM2
0
241
966
2012-08-16T01:43:16Z
Admin
1
moved [[ATtiny85 PWM2]] to [[ATtiny85 PWM]] over redirect
wikitext
text/x-wiki
#REDIRECT [[ATtiny85 PWM]]
dea410eed747b709eba5bd92ad5a66f1461ad8d5
ATtiny84 enable pullup resistors
0
242
967
2012-08-16T01:52:01Z
Admin
1
Created page with " * If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated. <pre> pinMode(PB0,INPUT); // set PB0 as input digita…"
wikitext
text/x-wiki
* If PORTxn is written logic one when the pin is configured as an input pin, the pull-up resistor is activated.
<pre>
pinMode(PB0,INPUT); // set PB0 as input
digitalWrite(PB0,HIGH); // enable the internal pull-up resistor
</pre>
* If PORTxn is written logic one when the pin is configured as an output pin, the port pin is driven high (one).
fc9c440973af6428ab6dcff94a7ced73341bc4bd
Single Board Computers
0
243
984
983
2012-08-30T04:07:17Z
Admin
1
wikitext
text/x-wiki
Specs of some of the small-ish SBC's (Single Board Computers) I've used.
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Model</b>
|style="background-color:#f2f2f2;"|<b>CPU</b>
|style="background-color:#f2f2f2;"|<b>Speed</b>
|style="background-color:#f2f2f2;"|<b>BogoMips</b>
|style="background-color:#f2f2f2;"|<b>nbench MEM</b>
|style="background-color:#f2f2f2;"|<b>nbench INT</b>
|style="background-color:#f2f2f2;"|<b>nbench FP</b>
|style="background-color:#f2f2f2;"|<b>Power Usage</b>
|-
|LinkSys NSLU2
|ARM Intel XScale-IXP42x Family rev 1 (v5l)
|133MHz
|132.71
|0.284
|0.351
|0.004
|3.5 - 3.9 Watts
|-
|Marvell SheevaPlug
|ARM Marvell Kirkwood Feroceon 88FR131 rev 1 (v5l)
|1.2GHz
|1192.75
|3.408
|4.988
|0.351
|2.3 - 7.0 Watts
|-
|Raspberry Pi
|ARM1176JZF-S (armv6k)
|700MHz
|697
|2.140
|2.924
|0.230
|3.5 Watts
|}
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
[http://www.tux.org/~mayer/linux/bmark.html nbench] is an old school benchmark program made by BYTE. It is used to test the CPU's memory access, integer and floating point speed. It is useful to benchmark the Sheeva Plug with nbench because the nbench webiste has a large collections of results from computers long ago (Intel 486DX/33!).
2bbd07dc08be0de025d4f509595d211965c0a616
MediaWiki:Sidebar
8
245
1002
1001
2012-09-06T03:08:26Z
Admin
1
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help
* SEARCH
* TOOLBOX
* LANGUAGES
e7f21f0cae3181e6175a69bd44c633184afba8b5
Java
0
190
1004
881
2012-09-14T22:37:15Z
Admin
1
wikitext
text/x-wiki
Some java programs I've been occupied with:
* [[SafeList]] safely store sensitive information on Android
* [[Angles]] angle calculator, simple trigonometry, on Nokia
* [[Predict]] satellite predictions and real-time tracking on Android
* [[MagicMemo]] A simple and effective memo/notepad app
8afe08c0049639aaf37853f9063434dcba1c2a58
Android
0
180
1008
878
2012-09-14T22:40:24Z
Admin
1
wikitext
text/x-wiki
Some programs I made for Android smart phones
* [[SafeList]]
* [[Predict]]
* [[QRZ]]
* [[MagicMemo]]
792490349b612ea90e000574e3c3e6a2cf4e1ab6
File:SafeList.apk
6
221
1046
1045
2012-10-07T09:46:15Z
Admin
1
uploaded a new version of "[[File:SafeList.apk]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Recipes
0
130
1048
446
2012-10-13T10:27:56Z
Admin
1
wikitext
text/x-wiki
==Recipes==
[[porridge]]
[[muesli]]
[[truffels]]
22bace2890f79f29753ad00fa05662b9fe83d237
File:Home-made-truffles.jpg
6
249
1050
2012-10-13T10:36:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Truffels
0
248
1055
1054
2012-10-13T10:39:42Z
Admin
1
wikitext
text/x-wiki
oatmeal chocolate truffels
[[File:Home-made-truffles.jpg|200px]]
Ingredients:
* oats
* cacao
* butter
* brown sugar
* pinch of salt
Preparation:
* ground oats until almost powder
* set stove to low(est) heat
* slowly melt the butter
* add cacao and sugar and stir until absorbed
* add ground oats until thick mass (add oats until 'rollable' consistency has been reached')
* wash hands and roll mixture into 2-3cm dia balls
Optional:
* sprinkle with a thin layer of cacao
8202270733a24d591d5c5e3e7a2b20e9fa4fe649
Porridge
0
131
1057
1047
2012-10-13T23:32:57Z
Admin
1
wikitext
text/x-wiki
porridge - 2 big servings
Ingredients:
* 1 cup oats
* 1 cup raisins & nuts (almonds, peanuts, walnuts, etc..)
* 2 cups milk
* 1 cup water
* 1 tablespoon sesame seeds
* 2 tablespoons of dessicated dried coconut flesh
* 2-3 tablespoons LSA (Linseed, Sunflower seeds and Almonds mix)
Preparation:
* heat up, stir until until boiling
* fill two bowls with porridge
Optionally, add:
* honey
* cinnamon
699245eba6955f1fe716810d83780a9c4e1a67f6
Muesli
0
250
1058
2012-10-16T09:36:41Z
Admin
1
Created page with "Muesli (bircher kinda) * Yoghurt * oats * Nuts, seeds and dried fruit * LSA * cinnamon * Milk * coconut"
wikitext
text/x-wiki
Muesli (bircher kinda)
* Yoghurt
* oats
* Nuts, seeds and dried fruit
* LSA
* cinnamon
* Milk
* coconut
49bdb9d2bacb75fa9158a962d5a2483bcb2c89b8
File:LM78L05.pdf
6
252
1073
2012-11-21T04:09:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LM2940.pdf
6
253
1075
2012-11-21T04:10:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LM7805.pdf
6
254
1077
2012-11-21T04:12:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Attiny85-summary.pdf
6
255
1079
2012-11-21T21:35:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu-notes-01
0
251
1084
1083
2012-11-24T23:30:30Z
Admin
1
wikitext
text/x-wiki
Presentation Notes for the Microcontroller Introduction at Westlakes Amateur Radio Club
Data sheets
* [[Datasheets]] Link to various datasheets
Hardware setup:
* connection diagram
* batch/script files
* avrdude
Avrdude program script
* Windows
<pre>
@echo off
set PROJECT=blinkled
set SPEED=16000000UL
set PORT=\\.\USBSER000
set GCC_DEVICE=attiny85
set PGM_DEVICE=t85
set PGM_PROTO=avrispv2
set GCC_OPTIMISATION=-Os
set AVRTOOLS=C:\winavr-20100110\bin
echo compile program
avr-gcc -g %GCC_OPTIMISATION% -Wall -mcall-prologues -DF_CPU=%SPEED% -mmcu=%GCC_DEVICE% -c -o %PROJECT%.o %PROJECT%.c
echo create object file
avr-gcc -g %GCC_OPTIMISATION% -Wall -mcall-prologues -DF_CPU=%SPEED% -mmcu=%GCC_DEVICE% %PROJECT%.o -o %PROJECT%.obj
echo convert object file to hex file
avr-objcopy -R .eeprom -O ihex %PROJECT%.obj %PROJECT%.hex
echo write program to chip
avrdude -F -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -U flash:w:%PROJECT%.hex
echo avr-list output:
echo ----------------
%AVRTOOLS%\avr-size -C --mcu=%GCC_DEVICE% %PROJECT%.obj > %PROJECT%_avr-size.txt
type %PROJECT%_avr-size.txt
pause
</pre>
* Linux
Demo Programs for the ATtiny85:
* Blink led
<pre>
/*
Demo program: blinkled.c
This program continously loops, bringing PB4 high and low with one-second intervals.
ATtiny85
+--- ---+
(RST) PB5 -|1 |_| 8|- VCC
PB3 -|2 7|- PB2 (SCK)
+---|<|------ PB4 -|3 6|- PB1 (MISO)
| led +-- GND -|4 5|- PB0 (MOSI)
| | +-------+
+--/\/\/--+
1k
Pololu programming cable pinout (top view)
+---+
---------------- gnd |o o| rst
ribbon cable mosi |o o| sck
-----red-------- vdd |o o| miso
+---+
NOTE: The T85 must be externally powered with 5V (4.5V does NOT work!)
A t85 driving a standard 2x16 LCD without backlit LED on draws
about 8.5mA so with 100mA to spare on a USB port you could consider
grabbing 5V from the Pololu programmer. The 5V pin on the
programmer is labeled: 'VBUS (+5V)'
*/
#include <avr/io.h>
#include <util/delay.h>
#define LED PB4 // Define ext led pin on PB4
#define OUTPUT 0
#define INPUT 1
#define LOW 0
#define HIGH 1
void pinMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin));
} else {
(DDRB &= ~(1 << pin));
}
}
void digitalWrite(int pin, int state)
{
// make sure port is set to output
DDRB |= (1 << pin);
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
int main( void )
{
pinMode(LED,OUTPUT); // Set output direction on LED
while ( 1 )
{
digitalWrite (LED,HIGH);
_delay_ms(1000);
digitalWrite (LED,LOW);
_delay_ms(1000);
}
return 0;
}
</pre>
* Read push button state
* Analog to Digital
* PWM (pulse width modulation)
Web links:
(AVR)
* http://www.atmel.com/products/microcontrollers/avr/default.aspx Atmel 8 and 32-bit microcontrollers
* http://www.pololu.com/catalog/product/1300 Pololu, a basic USB-based AVR ISP Programmer
* http://winavr.sourceforge.net/ WinAVR, AVR-GCC for Windows
* http://www.nongnu.org/avrdude/ AVRdude, ROM downloader/updater
* http://www.engbedded.com/fusecalc AVR Fuse Byte calculator
* http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/ ATtiny fuse byte resetter
* http://www.arduino.cc/ Arduino, prototyping platform
* http://www.avrfreaks.net/ AVRfreaks, forum for Atmel microcontrollers
(Other)
* http://www.raspberrypi.org/ Raspberry Pi, ARM-based Single Board Computer (SBC)
* http://www.sparkfun.com/ Sparkfun, USA-based electronics store
* http://littlebirdelectronics.com/ Littlebird Electronics, reseller (and more) for Sparkfun products
* http://www.robotgear.com.au RobotGear, reseller (and more) for Sparkfun products and Pololu programmer
* http://www.diptrace.com/ Diptrace, printed circuit board (PCB) design software
* http://oshpark.com/ OSH Park (previously dorkbotpdx), inexpensive manufacturer for low-volume PCB prototyping
* http://www.gabotronics.com/development-boards/xmega-xprotolab.htm XprotoLab, a tiny oscilloscope and wave form generator (AWG)
684cce247c025a334659dd8ba26bb80a17baa989
Dos2unix
0
257
1120
1119
2013-01-20T01:39:17Z
Admin
1
wikitext
text/x-wiki
A simple but effective script that strips out the /r (Carriage Return) character from DOS-based text files so that you don't see ^M at the end of every line when viewing under linux.
<pre>
#!/bin/sh
echo "dos2unix"
for file in "$@"
do
tr -d "\r" <$file>$file.unix
done
</pre>
6a7c507647a444482b66c1b98ffc36d076850382
Unix2dos
0
258
1122
1121
2013-01-20T01:59:20Z
Admin
1
wikitext
text/x-wiki
A simple but effective script that inserts the /r (Carriage Return) character for DOS-based text files so that you don't have long, continous lines when viewing under windows.
<pre>
#!/bin/sh
echo "unix2dos"
for file in "$@"
do
awk 'sub("$", "\r")' $file > $file.dos
done
</pre>
16ce3d7984979afb9433c8248b926cd5311751d7
DigitalRead
0
262
1128
2013-01-24T09:35:43Z
Admin
1
Created page with "<pre> int digitalRead(int pin) { if (bit_is_set(PINB,pin)) { return 1; } else { return 0; } } </pre>"
wikitext
text/x-wiki
<pre>
int digitalRead(int pin)
{
if (bit_is_set(PINB,pin))
{
return 1;
} else {
return 0;
}
}
</pre>
ba9e27b5ba547cad24720ed7f0a185a0444aef04
DigitalWrite
0
263
1129
2013-01-24T09:36:11Z
Admin
1
Created page with "<pre> void digitalWrite(int pin, int state) { if (state == HIGH) { (PORTB |= (1 << pin)); } else { (PORTB &= ~(1 << pin)); } } </pre>"
wikitext
text/x-wiki
<pre>
void digitalWrite(int pin, int state)
{
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
</pre>
7e61c3def89b3228c1a04a1712dd80ffa0355d29
AVR Functions and Libraries
0
259
1130
1125
2013-01-24T09:36:43Z
Admin
1
wikitext
text/x-wiki
[[I2C]]
[[LCD]]
[[data types]]
[[Internal EEPROM]]
[[digitalRead]]
[[digitalWrite]]
[[pinMode]]
[[shiftout]]
87c97801afb57e704b4d9bf8b60e7dfefe02c1cd
PinMode
0
264
1131
2013-01-24T09:37:12Z
Admin
1
Created page with "<pre> void pinMode(int pin,int state) { if (state == OUTPUT) { (DDRB |= (1 << pin)); // set pin to output } else { (DDRB &= ~(1 << pin)); // set pin to input }…"
wikitext
text/x-wiki
<pre>
void pinMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin)); // set pin to output
} else {
(DDRB &= ~(1 << pin)); // set pin to input
}
}
</pre>
204f4cf2dcbed568182aebac3f5756dcd1025ebb
LCD
0
261
1133
1127
2013-01-26T04:15:06Z
Admin
1
wikitext
text/x-wiki
This page shows the code for directly accessing an attached LCD device (here the 2x16 character lcd device from Jaycar).
<pre>
void Write_LCD_Nibble(unsigned short N, int RS)
{
digitalWrite(STR,0);
// ****** Write RS *********
digitalWrite(CLK,0);
digitalWrite(Dout,RS); // Data_Pin
digitalWrite(CLK,1);
digitalWrite(CLK,0);
// Shift in 4 bits
int t = 0;
int Flag = 0;
int Mask = 8;
for (t=0; t<4; t++)
{
Flag = N & Mask;
if(Flag==0)
{
digitalWrite(Dout,0); // Data_Pin
} else {
digitalWrite(Dout,1); // Data_Pin
}
digitalWrite(CLK,1);
digitalWrite(CLK,0);
Mask = Mask >> 1;
}
// One more clock because SC and ST clks are tied
digitalWrite(CLK,1);
digitalWrite(CLK,0);
digitalWrite(Dout,0); // Data_Pin
digitalWrite(STR,1); // Enable_Pin (to LCD)
digitalWrite(STR,0); // Enable_Pin (to LCD)
}
void Write_LCD_Data(unsigned short D)
{
int RS = 1; // It is Data, not command
int Low_Nibble = D & 15;
int High_Nibble = D/16;
Write_LCD_Nibble(High_Nibble,RS);
Write_LCD_Nibble(Low_Nibble,RS);
}
void Write_LCD_Cmd(unsigned short C)
{
int RS = 0; // It is command, not data
int Low_Nibble = C & 15;
int High_Nibble = C/16;
Write_LCD_Nibble(High_Nibble,RS);
Write_LCD_Nibble(Low_Nibble,RS);
}
void initialise_LCD()
{
pinMode(CLK,0);
pinMode(STR,0);
pinMode(Dout,0);
_delay_ms(100);
Write_LCD_Cmd(0x03); // function set
_delay_ms(50);
Write_LCD_Cmd(0x03);
_delay_ms(50);
Write_LCD_Cmd(0x03);
_delay_ms(50);
Write_LCD_Cmd(0x02);
_delay_ms(50);
Write_LCD_Cmd(0x2C); // Display ON, No cursors
_delay_ms(50);
Write_LCD_Cmd(0x06); // Entry mode- Auto-increment, No Display shifting
_delay_ms(50);
Write_LCD_Cmd(0x0E);
_delay_ms(50);
Write_LCD_Cmd(0x01);
_delay_ms(50);
Write_LCD_Cmd(0x80);
_delay_ms(50);
}
void Position_LCD(unsigned short x, unsigned short y)
{
int temp = 127 + y;
if (x == 2)
{
temp = temp + 64;
}
Write_LCD_Cmd(temp);
}
void Clear_LCD()
{
Write_LCD_Cmd(0x01); // Clear LCD
_delay_ms(5);
}
void Write_LCD_Text(char *StrData)
{
int p = 0;
int q = strlen(StrData);
int temp = 0;
for (p = 0; p < q; p++)
{
temp = StrData[p];
Write_LCD_Data(temp);
}
}
void Write_LCD_Number(char number)
{
// writes a number's digits on the display
int digits;
if (number == 0)
{
digits = 0;
int array[0];
array[0]=0;
Write_LCD_Data(array[0]+48);
} else {
// determine the number of digits
int digits = (int)(log(number)/log(10))+1;
// split up the number to an array
int i = digits - 1;
int array[digits];
while (number > 0)
{
array[i--] = number % 10;
number /= 10;
}
// display array on LCD
for(i = 0; i <= digits-1; i++)
{
Write_LCD_Data(array[i]+48);
}
}
}
</pre>
361c3757faba87124f0c744b861af60be5d07ce4
MagicMemo
0
246
1135
1022
2013-01-26T07:34:59Z
Admin
1
wikitext
text/x-wiki
MagicMemo
Status: published
App Website: https://play.google.com/store/apps/details?id=map.magicmemo
testing: [[File:MagicMemo.apk]]
f77160b65ba79fcc0674b9da3da84d5366c7a010
File:MagicMemo.apk
6
247
1137
1136
2013-01-26T09:15:09Z
Admin
1
uploaded a new version of "[[File:MagicMemo.apk]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
StopDiskWrites
0
256
1141
1140
2013-01-30T21:51:46Z
Admin
1
wikitext
text/x-wiki
The linux operating system by default writes quite a bit of information to log files during a normal system boot and after it's booted even when the machine is just sitting there idling away the O/S will still add entries to log files.
Specifically for systems that run off a filesystem with limited write-cycles, such as flash memory (SDCard, USB drive, etc..) it is important to minimise, if not stop all together, the writing of information to the filesystem that lives on the flash memory.
* Solution #1 -- write elsewhere
The 'directory' /dev/shm is a 'ramdisk' and ideal for storing information that is okay to delete in between reboots. The size of /dev/shm is roughly half that of the available RAM memory, but in such a way that if traditional applications need more memory it simply is taken away from /dev/shm. This process is dynamically, meaning that when memory is available again, /dev/shm will grow back to its original size if possible.
Services that are ideal to move to /dev/shm are everything in /var/run and /tmp. Depending on what applications you're running there's other candidates too such as apache and samba. More on that later.
* Solution #2 -- stop logging
An obvious candidate here is cron as it writes to /var/log/syslog every time it runs a cron job. The logging process can be controlled with /etc/rsyslog.conf and we'll tackle the specifics below.
Below is a list of processes that normally write to disk and how to stop that from writing to flash.
==Logon/Logoff==
writes to: /var/log/wtmp, /var/log/lastlog
==Swap file==
a swap file is not required and may drastically reduce flash memory when in use.
==Cron Jobs==
writes to: /var/log/syslog
solution: configure /etc/rsyslog to stop logging cron info
Open /etc/rsyslog.conf, and change:
<pre>
*.*;auth,authpriv.none -/var/log/syslog
</pre>
To:
<pre>
*.*;auth,authpriv,cron.none -/var/log/syslog
</pre>
and also add:
<pre>
:msg, contains, "pam_unix(cron:session): session closed for user root" ~
:msg, contains, "pam_unix(cron:session): session opened for user root" ~
</pre>
Restart the syslog daemon to affect the changes:
<pre>
# /etc/init.d/rsyslog restart
[ ok ] Stopping enhanced syslogd: rsyslogd.
[ ok ] Starting enhanced syslogd: rsyslogd.
</pre>
==man-db (cron)==
The man-db program updates/cleans? the man pages in /var/cache/man. By default it does this on a daily basis and although nothing is written to these directories, there is a slight bug in the man-db package that always writes/touches? the directories. Bug reports Bug#619726 and Bug#620947 at http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg890841.html (/etc/cron.daily/man-db every day touches localization subdirectories in /var/cache/man/) shows more details.
Since keeping the manpages in good order probably isn't that important we offer a simple solution to the above disk writes, namely to insert a little 'exit 0' at the top of the man-db script in /etc/cron.daily/man-db.
<pre>
#!/bin/sh
#
# man-db cron daily
exit 0 # added to prevent man-db from writing to the filesystem every day.
set -e
iosched_idle=
</pre>
==MARK entries==
writes to: /var/log/messages
solution: configure /etc/default/syslogd to stop logging the MARK entries
Check if this is still happening on your system as although I noticed it on earlier versions of Debian, the latest 'Wheezy' does not leave MARK statements every 20 minutes anymore. In any case, if you do have these MARK statements in /var/log/messages coming up you can disable them by editing /etc/default/syslogd and change
<pre>
SYSLOGD=""
</pre>
to
<pre>
SYSLOGD="-m 0"
</pre>
Restart the syslog daemon to affect the changes:
<pre>
# /etc/init.d/rsyslog restart
[ ok ] Stopping enhanced syslogd: rsyslogd.
[ ok ] Starting enhanced syslogd: rsyslogd.
</pre>
==Most applications write to /var/run and /tmp==
writes to: /tmp, /var/run and /var/tmp
solution: move all to tmpfs
Create the following entries in /etc/fstab
<pre>
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
</pre>
Rebooting the sytem is the preferred method to affect these changes.
==ntp==
Ntp daemon writes offset values to /var/lib/ntp/ntp.drift and generic logging to /var/log/daemon.log
For the drift file we make a symlink to the whole /var/lib/ntp directory and point it to /dev/shm, so that ntp.drift is stored as /dev/shm/ntp.drift
<pre>
mv /var/lib/ntp/ntp.drift /dev/shm
rm -rf /var/lib/ntp
ln -s /dev/shm /var/lib/ntp
</pre>
Ntp will also log entries to /var/log/daemon.log. We edit the file /etc/default/ntp and add an option to log to a different file. You guessed it, to /dev/shm!
open /etc/default/ntp and update the line to:
<pre>
NTPD_OPTS='-g -l /dev/shm/ntpd.log'
</pre>
We intercept any remaining logging of messages by updating /etc/rsyslog.conf and adding the following lines:
<pre>
:msg, contains, "logging to file /dev/shm/ntpd.log" ~
:msg, contains, "ntpd 4.2.6p5@1.2349-o" ~
</pre>
Restart the syslog daemon to affect the changes:
<pre>
# /etc/init.d/rsyslog restart
[ ok ] Stopping enhanced syslogd: rsyslogd.
[ ok ] Starting enhanced syslogd: rsyslogd.
</pre>
==hardware clock==
Not sure if this is related to ntp, but let's write move this file to /dev/shm too
<pre>
mv /etc/fake-hwclock.data /dev/shm && ln -s /dev/shm/fake-hwclock.data /etc/fake-hwclock.data
</pre>
==Apache==
Apache logs to /var/log/apache2/.
comment out the default logging to access.log by editing /etc/apache2/sites-available/default
I've noticed that /var/log/apache2 can be missing it's best to add the following lines to the /etc/init.d/apache2 startup script so that the
files are always moved to /dev/shm without affecting the operation of apache after reboots.
Open /etc/init.d/apache2 and at the end of the script find where the 'CASE' statements begin. Just above that, create two new procedures:
<pre>
setup_symlinks() {
# --- begin: custom code to minimise disk writes ---
# Force creation of /var/log/apache2 in /dev/shm
# check if symlink already exists
if ! test -L /var/log/apache2
then
# symlink is not there yet
# check if directory exists
if test -d /var/log/apache2
then
# /var/log/apache2 is a normal directory
# action: move to /dev/shm and create new symlinks
rm -rf /dev/shm/apache2
mv /var/log/apache2 /dev/shm
ln -s /dev/shm/apache2 /var/log/apache2
else
# /var/log/apache2 has not been created yet
# just create empty framework
mkdir /dev/shm/apache2
ln -s /dev/shm/apache2 /var/log/apache2
fi
fi
# --- end: custom code to minimise disk writes ---
}
delete_symlinks() {
rm -rf /dev/shm/apache2
rm -rf /var/log/apache2
}
</pre>
Then add 'setup_symlinks' to the start, reload and restart cases, and the delete_symlinks to the stop case.
Example:
<pre>
case $1 in
start)
log_daemon_msg "Starting web server" "apache2"
</pre>
To:
<pre>
case $1 in
start)
setup_symlinks
log_daemon_msg "Starting web server" "apache2"
</pre>
==Samba==
Even though samba wasn't doing anything I still noticed that /etc/samba/dhcp was created. Since the file was a 0-Byte placeholder file I simply created a symlink with a slight name change to /dev/shm for it.
<pre>
mv /etc/samba/dhcp.conf /dev/shm/samba-dhcp.conf && ln -s /dev/shm/samba-dhcp.conf /etc/samba/dhcp.conf
</pre>
==dhcp client==
The dchp client writes the search path and domain name as well as a list of DNS servers in /etc/resolv.conf. We move this file to /dev/shm too.
edit /etc/init.d/networking and add the following procedure:
<pre>
setup_symlinks() {
# --- begin: custom code to minimise disk writes ---
# Force creation of /etc/resolv.conf in /dev/shm
# check if symlink already exists
if ! test -L /etc/resolv.conf
then
# symlink is not there yet
# check if file exists
if test -f /etc/resolv.conf
then
# /etc/resolv.conf is a normal file
# action: move to /dev/shm and create new symlinks
rm -rf /dev/shm/resolv.conf
mv /etc/resolv.conf /dev/shm
ln -s /dev/shm/resolv.conf /etc
else
# /etc/resolv.conf has not been created yet
# just create an empty file
touch /dev/shm/resolv.conf
ln -s /dev/shm/resolv.conf /etc
fi
fi
# --- end: custom code to minimise disk writes ---
}
</pre>
Then link to it from the start, reload and restart case statements.
The DHCP client also keeps track of it's dchp lease details in a file under /var/lib/dhcp. One for each interface (e.g. eth0, eth1, wlan0, wlan1, etc..). In most cases you will be using only one or two ethernet interfaces to connect the network. Simply create a symlink to /dev/shm for every interface and all is good. The file /var/lib/dhcp/dhclient.leases (size 0) can be left as is.
<pre>
mv /var/lib/dhcp/dhclient.wlan0.leases /dev/shm && ln -s /dev/shm/dhclient.wlan0.leases /var/lib/dhcp
mv /var/lib/dhcp/dhclient.eth0.leases /dev/shm && ln -s /dev/shm/dhclient.eth0.leases /var/lib/dhcp
</pre>
Lastly, DHCP will also log its activities in /var/log/syslog. Simply add a filter in /etc/rsyslog.conf to intercept these messages before they get logged. Open /etc/rsyslog.conf and add the following lines:
<pre>
:msg, contains, "dhclient:" ~
:msg, contains, "ifplugd(wlan0)[" ~
:msg, contains, "wpa_supplicant" ~
</pre>
==Alsa==
The sound system Alsa also creates a file in /var/lib. Again, we create a symlink to /dev/shm for it.
<pre>
mv /var/lib/alsa/asound.state /dev/shm && ln -s /dev/shm/asound.state /var/lib/alsa
</pre>
==WPA rekeying==
Part of the specification of WPA/2 is to periodically change the encryption keys, this is known as rekeying and it logs to /var/log/daemon.log every time it changes keys. We can intercept these messages before they get logged by adding a filter in /etc/rsyslog.conf.
Open /etc/rsyslog.conf and add the following line:
<pre>
:msg, contains, "WPA: Group rekeying completed" ~
</pre>
==Other resources==
http://www.cyrius.com/debian/nslu2/linux-on-flash.html
989751db182297a830386d9c3ebec673f1cc5387
File:Openvpn-win-gui.PNG
6
268
1197
2013-02-19T02:25:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Openvpn logo.png
6
269
1206
2013-02-19T02:42:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
OpenVPN
0
244
1210
1209
2013-02-19T02:47:25Z
Admin
1
wikitext
text/x-wiki
This page describes how to set up a basic [http://openvpn.net/ OpenVPN] point-to-point installation on Debian Linux. For a setup with a server and username/certificate controlled clients, view the [[Openvpn-setup]] page.
From the OpenVPN website:
"OpenVPN is a full-featured SSL VPN which implements OSI layer 2 or 3 secure network extension using the industry standard SSL/TLS protocol, supports flexible client authentication methods based on certificates, smart cards, and/or username/password credentials, and allows user or group-specific access control policies using firewall rules applied to the VPN virtual interface. OpenVPN is not a web application proxy and does not operate through a web browser."
http://openvpn.net/index.php/open-source/documentation/howto.html
[[File:Openvpn logo.png]]
==Installing the OpenVPN software==
This step needs to be done on both server and client(s).
Make sure to have 'contrib' listed in /etc/apt/sources.list
<pre>
# apt-get update
# apt-get install openvpn
</pre>
on the vpn server machine:
* create a new static key
<pre>
# cd /etc/openvpn
# openvpn --genkey --secret static.key
</pre>
This will create a new file called 'static.key'. Copy this file securely to the client in the /etc/openvpn directory.
* create the server configuration file
Create /etc/openvpn/vpn.conf and add the following lines:
<pre>
dev tun0
port 655
proto udp
ifconfig 10.9.8.1 10.9.8.2
secret /etc/openvpn/static.key
</pre>
Where 10.9.8.x is your VPN subnetwork once it is connected, 10.9.8.1 will be IP of the server and 10.9.8.2 is IP of client. There is no need to enter public ip addresses or internet domain names etc.. Only the client will need the server's (router's) public ip address.
On the vpn client machine:
* make sure the /etc/openvpn/static.key is read-only (chmod 400). This is not a requirement but simply best practice.
* create the client configuration file
Create /etc/openvpn/vpn.conf and add the following lines:
<pre>
remote server.public.ip.address
dev tun0
port 655
proto udp
ifconfig 10.9.8.2 10.9.8.1
secret /etc/openvpn/static.key
</pre>
To test, start OpenVPN by hand on both sides with the following command:
<pre>
# openvpn --config /etc/openvpn/vpn.conf --verb 6
</pre>
The openvpn startup script (in /etc/init.d) will automatically look for .conf files in /etc/openvpn and start them at boot. To change this behaviour, simply create a new directory under /etc/openvpn/ and move the .conf file in there (e.g. /etc/openpvn/myvpn/vpn.conf).
ac32377f1e0df62a24558ed8039f275dabb52909
Dovecot-imapd
0
270
1212
2013-03-13T02:42:11Z
Admin
1
Created page with "Dovecot is an open source IMAP and POP3 email server for Linux/UNIX-like systems, written with security primarily in mind. Dovecot is an excellent choice for both small and large…"
wikitext
text/x-wiki
Dovecot is an open source IMAP and POP3 email server for Linux/UNIX-like systems, written with security primarily in mind. Dovecot is an excellent choice for both small and large installations. It's fast, simple to set up, requires no special administration and it uses very little memory.
Howtos:
* [[dovecot basic]] dovecot, exim and fetchmail. A basic setup where dovecot hosts the mail, exim is the MTA, and fetchmail is used to grab external mail using POP3.
10d210745c1eae5bdac4f8b730a2fec46e99ea10
File:0051-firmware v0.03.zip
6
272
1219
2013-04-01T05:02:27Z
Admin
1
now handles faster comms due to built in clock stretching
wikitext
text/x-wiki
now handles faster comms due to built in clock stretching
250a3b1a2f53a548c79e42ca572c2e5a0979e7b4
2013 VK Contest Dates
0
273
1224
1223
2013-04-30T01:34:48Z
Admin
1
wikitext
text/x-wiki
2013 VK Contest Dates (Phone)
<pre>
Date Name Start End Bands
------------------------------------------------------------------------
16-17 Mar John Moyle 0100 - 0059 (24hrs) All bands
4 May Harry Angel 1000 - 1146 (106mins) 3535 - 3665 kHz
11 May VK Trans Tasman 0800 - 1400 (6hrs) 80m
20 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m
17-18 Aug Rememberance Day 0300 - 0259 (24hrs) All bands
17-18 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
5-6 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
3433d6b8a3edb02b97e6d66ad1c006afe3ec31ad
Howto's
0
274
1226
2013-06-05T04:01:43Z
Admin
1
moved [[Howto's]] to [[Docs and Howto's]]
wikitext
text/x-wiki
#REDIRECT [[Docs and Howto's]]
60fa4d03fd963932de5b55684e711e5f10a05bfc
Cryptography
0
275
1231
1230
2013-06-05T04:06:50Z
Admin
1
wikitext
text/x-wiki
Diffy Hellman key exchange explained with colours:
* http://www.youtube.com/watch?v=3QnD2c4Xovk Youtube link or (hosted here)
Choosing a strong password:
* http://xkcd.com/936/
89a608c599e23672042727a8472a0721eb9a06b0
Alsa
0
277
1249
1247
2013-11-06T08:39:51Z
Admin
1
wikitext
text/x-wiki
how-to-determine-your-audio-cards-or-usb-mics-maximum-sampling-rate
<code>
arecord -f dat -r 60000 -D hw:0,0 -d 5 test.wav
</code>
---> 48,000Hz
check volume:
<code>
sox recordedfile.wav -n stat
</code>
near-realtime audio levels:
<code>
arecord -Dhw:0 -c2 -d 0 -fdat /dev/null -vvv
</code>
find out the alsa device id's:
<code>
root@raspberrypi:/home/map# cat /proc/asound/cards
0 [Device ]: USB-Audio - USB Sound Device
USB Sound Device at usb-bcm2708_usb-1.3, full speed
1 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA
bcm2835 ALSA
</code>
Therefore, the hardware device id for the BRCM device is: $hw:1
To specify a recording device, first find out which device id is set for the input device:
<code>
root@raspberrypi:/home/map# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Device [USB Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
root@raspberrypi:/home/map#
</code>
Therefore, the alsa hardware device id for the capture device on the USB Sound Device (there is only one) is: $hw:0,0
==CLI setting of audio parameters==
The command line can be used to set many values of the sound device. Most options are to set volume, capture device, balance, etc..
For example, lets say we want to Unmute and then Set the Master Volume.
First, find out what your sound card device is capable of:
<code>
amixer -L
</code>
Troubleshooting:
arecord: set_params:1145: Unable to install hw params:
Seems to be a fault with the usb stack or something silly, a reboot fixed this problem for me.
a5218286fc791a09efa0291e718907dab9572a38
File:Temps-week.png
6
280
1259
2013-12-03T04:43:12Z
Admin
1
example screenshot of DS1820 temperature logging around the house
wikitext
text/x-wiki
example screenshot of DS1820 temperature logging around the house
ebfdadeeabf9e93e50fe0da9f2891018a3fcb0aa
Dd-mount-tar
0
281
1265
1264
2013-12-23T01:00:15Z
Admin
1
wikitext
text/x-wiki
* Extract from a .tar.gzipped dd file straight to another device
When creating a dd image of a whole disk it can be worthwhile compressing it using .tar.gz
The resulting file can still be extracted and dd'ed to a new disk all in one go:
# tar xz0f disk-image_dd.tar.gz | dd of=/dev/sda bs=1M
* To watch the progress of an ongoing dd command, send it the -USR1 kill signal:
- find the pid of the dd command
- send the kill command:
# kill -USR1 <pid>
This will not kill the running dd process, it's just a method of communicating signals to the dd program.
* mount a partition inside a whole-disk dd image
- install parted if you haven't done so already
- run parted on the dd file
- switch to bytes 'unit B'
- print the partition table 'print'
- take note of the Start value of the partition you wish to mount (drop the 'B' at the end of the number!)
- quit parted 'quit'
- mount the partition using the offset argument
# mount whole-disk.dd -o loop,offset=<startposition> /mnt/partition
* mount a partition inside a tar.gzipped whole-disk dd image
- use the above technique to obtain the offset for the partition you wish to mount
- install kpartx if you haven't done so already
(http://unix.stackexchange.com/questions/31669/is-it-possible-to-mount-a-gzip-compressed-dd-image-on-the-fly)
9ddba294c4bf51c281801751301e9a5c9bab85b6
USB-currents
0
283
1270
2013-12-25T00:00:47Z
Admin
1
Created page with " The USB2.0 specification allows for devices to be powered through the USB port. The voltage is 5.0 Volts and the maximum current draw is 500mA per USB port. The default ma..."
wikitext
text/x-wiki
The USB2.0 specification allows for devices to be powered through the USB port.
The voltage is 5.0 Volts and the maximum current draw is 500mA per USB port.
The default maximum current draw is 250mA and this can be increased to 500mA by the client
negotiating with the host.
0c680e002d9938442395f97e5f2b5c1d51dc14c5
USB-device-currents
0
284
1284
1283
2013-12-25T02:01:37Z
Admin
1
wikitext
text/x-wiki
Various USB devices and their current draw
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Device</b>
|style="background-color:#f2f2f2;"|<b>Idle</b>
|style="background-color:#f2f2f2;"|<b>Max</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|-
|Basic USB keyboard
|5mA
|45mA
|Leds (caps, num, scroll) add most current!
|-
|Optical mouse
|17.3mA
|32mA
|Logitech M-BZ96C
|-
|[[Argent Data OpenTrackerUSB]]
|23mA
|23mA
|
|-
|[[Edimax EW-7811Un WiFi]]
|34mA
|85mA
|idle at 34mA with short bursts of 71mA
|-
|2.5" Sata HDD in USB enclosure
|180mA
|600mA
|
|-
|Raspberry Pi (model A)
|160mA
|191mA
|Without Ethernet controller and 1 USB port
|-
|Raspberry Pi (model B)
|404mA
|367mA
|With Ethernet controller and 2 USB ports
|}
50cc92722c123b6688a88b5cbee19140f3d2275b
File:LittleWire driver win x86.zip
6
289
1287
2013-12-27T07:24:18Z
Admin
1
x86 driver for windows
wikitext
text/x-wiki
x86 driver for windows
3a7e8744600534d0587248c953960126cb65fc66
File:LittleWire driver win 64bit.zip
6
290
1289
2013-12-27T07:25:49Z
Admin
1
64bit driver for windows
wikitext
text/x-wiki
64bit driver for windows
745c216950a47d4d21cb6ab180d67f18e9d49a4a
File:Combined.zip
6
291
1291
2013-12-27T07:30:38Z
Admin
1
Combined version, (bootloader+main) combined firmware
wikitext
text/x-wiki
Combined version, (bootloader+main) combined firmware
6b41237fa80b5cdce805fe70c6ac65f128802008
File:Littlewire v13.zip
6
292
1295
2013-12-27T09:54:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LittleWire driver.zip
6
293
1297
2013-12-27T10:02:02Z
Admin
1
Drivers that work with the v1.3 firmware of the Littlewire AVR programmer
wikitext
text/x-wiki
Drivers that work with the v1.3 firmware of the Littlewire AVR programmer
9074bbe0c0a09da10a1330de3ed1ba5e62ccf5f3
File:0051-lcd-i2c-v0.04.zip
6
294
1300
2014-01-02T08:09:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0051-lcd-i2c-board.JPG
6
295
1302
2014-01-02T08:16:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0051-lcd-i2c-board
0
48
1307
1306
2014-01-02T08:21:01Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0051-lcd-i2c-board
| image = [[File:0051-lcd-i2c-board.JPG|150px]]
| imagecaption = 0051-top-with-lcd
| author = Marcel Post
| mcu = AVR ATtiny85
| initial_release_date = August 2011
| last_modified_date = January 2013
| pcb_layers = 2
| project_status = finished
| category = [[Electronics]]
}}
The '''LCD Board with I2C comms''' is a basic display board that accepts incoming data over I2C. It can be hooked up to a low-speed I2C network and its ID# can be set using a pushbutton.
<br> <br>
==Description==
After obtaining enough information on how to drive a 2 x 16 LCD unit with only three wires (by using a serial shift register) this board was my first attempt to produce something workable.
==Timeline==
* 2012-01-20 added major release of software version 1.0. This code is working fine.
* 2012-01-03 PCB's arrived and I've built up two boards.
* 2011-11-27 Ordered 2x PCB's with BatchPCB. Only after the boards have arrived, built up and tested I will post relevant firmware on this page. Until then!
* 2011 November - Finished schematic and designs
* 2011 September - Started designing a custom circuit board using the Diptrace software
* 2011 June - Prototype working with successful communication using an Arduino Duemilanove as the I2C master.
==Schematic==
[[File:0051-sch-v1.0.jpg|thumb|none]]
View schematic as pdf (Oct 2011) [[File:0051-sch-1.0.pdf]]
==Circuit Board==
[[File:0051-pcb-3d-v1.0.jpg|none]]
Nov 2011 - Finished design, now it's waiting for pcb manufacturing.
[[File:0051-pcb-v1.0.jpg|none]]
Latest design (November 2011)
Gerbers: [[File:0051-gerbers.zip]]
Other boards I'm currently designing: [[Pending_PCB_manufacturing]]
==Software==
Diptrace files (schematic and PCB): [[File:0051-I2C-LCD-board-v1.0.zip]]
Firmware:
v0.04 [[File:0051-lcd-i2c-v0.04.zip]] Released: 2 January 2014
v0.03 [[File:0051-firmware v0.03.zip]] Released: 1 April 2013
NOTE:
Be aware that I2C does not need a specific operating frquency. The code for this chip should be running on 8MHz in order with other I2C devices, but it may run on lower frequencies as well. I haven't tested this yet. So be sure to set the lower fuse byte to 0xE2 to disable CLKDIV8 and to make the chip run on 8MHz. Check the PROG.BAT or prog file for the proper settings.
==Release Notes==
* The pushbutton sets the internal I2C id. To use this, hold down the push button and then apply a voltage source to power up the board. With the button pressed the display will show black characters on the top row of the display. After 5 seconds, release the button and the board will go into setup mode. The display should show the current I2C id. The I2C protocol will be able to address a maximum of 127 devices on the bus. Pressing the button will cycle through these values. Press and hold the button for about 5 seconds to store the new ID into eeprom.
* When assembling the board I would recommend not to install the push button until you have confirmed that the display is showing activity. I had a case where I assembled the board and all I could see was a dark top half of the screen and nothing seemed to work. It turned out that I didn't install the push button properly. It made a connection between the top two pins even when the button was not pressed. This basically means that the board will try to go into setup mode but never gets further because the button is not released properly.
* The serial shift register chip I use is the M74HC595B1 from ST.
* When assembly has been completed and the ATtiny84 has been flashed with the proper firmware the board is ready to use. When powered on it will show a brief message 'I2C LCD Module' and on the second row 'Listening..'. The screen is cleared and it will sit there until there's something to display.
* (bug?) There may be a bug with this firmware that can cause the display not to work properly. I need to test this further but my concern is this: brand new microcontrollers have their EEPROM empty. This could mean '0x00' or '0xFF' or maybe even something else. The v1.0 firmware currently does not detect an out of range value and may cause the read-eeprom-value to fail. Whether this affects further operation of the board is unknown as I don't have any brand new chips to test with. If this is a bug it can be remedied fairly easily by following these steps:
1. change the source code and add a line that will write a value (e.g. decimal 61) to eeprom
2. compile the code and write to the chip using the ISP header (or use an external programmer)
3. power up the board and enter the setup mode to confirm that the ID has been set
4. change the source code to remove the line that was added in step 1
5. compile the code and write to the chip
* The software was developed using an Arduino as I2C master running at 16MHz. The ATtiny can keep up with this speed due to clock stretching. Howerver, to speed up communications it would be worthwile to set the clock speed of the ATtiny as high as possible. The ATiny85 can run at 1, 8 or 16MHz. Use the following fuse bytes to set the clock:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Speed</b>
|style="background-color:#f2f2f2;"|<b>Low Fuse Byte</b>
|style="background-color:#f2f2f2;"|<b>High Fuse Byte</b>
|-
|1MHz
|0x62
|0xDF
|-
|8MHz
|0xE2
|0xDF
|-
|16MHz
|0xC1
|0xDF
|-
|}
Command line example using avrdude:
<pre>
avrdude -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -U flash:w:%PROJECT%.hex -U lfuse:w:0xE2:m
</pre>
* The display board will assume end of transmission after a timeout. This can be set in the code and is currently set to 5 seconds.
* As per the I2C protocol the device supports giving an acknowledge by holding down SDA line.
* The board does not provide I2C bus pull-up resistors. You will have to add these to your project. (arduino's do have pull up resistors on the I2C bus)
Command reference:
To send data to the I2C LCD board you will need to use I2C and address it to the device's I2C id.
Use ASCII values to send individual characters to the display (e.g. '65' is 'A').
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>ASCII</b>
|style="background-color:#f2f2f2;"|<b>Description</b>
|-
|12
|Clear Display
|-
|10
|Enable Character Positioning (must be followed by row and column, see below)
|-
|32-126
|Standard ASCII Characters
|}
Character positioning
Use the '10' special command to position a character on the display.
Example:
send: 10 (enables character positioning)
send: 1 (go to first row)
send: 12 (go to 12th column)
send: 66 (send the letter 'B')
Example code for arduino:
<pre>
// put random characters on random places on the display
#include <Wire.h>
int device_id=61;
void welcome_text()
{
Wire.beginTransmission(device_id); // define device nr to transmit to
Wire.send(12); // clear the display
Wire.send("--- I2C Demo ---"); // welcome text line 1
Wire.endTransmission(); // stop transmitting
delay(3000);
Wire.beginTransmission(device_id); // define device nr to transmit to
Wire.send(12); // clear the display
Wire.endTransmission(); // stop transmitting
}
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
Wire.beginTransmission(device_id); // define device nr to transmit to
Wire.send(12); // clear the display
Wire.endTransmission(); // stop transmitting
}
void loop()
{
byte x,y,z,letter;
welcome_text();
for (z=255; z > 10; z=z-10)
{
letter=random(65,91);
y=random(1,3);
x=random(1,17);
Wire.beginTransmission(device_id); // define device nr to transmit to
Wire.send(10); // enable character positioning
Wire.send(y); // row:
Wire.send(x); // col:
Wire.send(letter); // place a letter
Wire.endTransmission(); // stop transmitting
delay(z*2);
Wire.beginTransmission(device_id); // define device nr to transmit to
Wire.send(10); // enable character positioning
Wire.send(y); // row:
Wire.send(x); // col:
Wire.send(" "); // overwrite the letter with space
Wire.endTransmission(); // stop transmitting
}
}
</pre>
==Gallery==
Below you can see the display is connected to an Arduino Duemilanove over I2C. The Arduino is sending out some text and the display board puts it on the screen.
[[Image:0051-lcd-i2c.jpg|none]]
[[Image:0051-side-with-lcd.jpg|none]]
Side-view of the board with the LCD unit mounted on top. The LCD unit used is the one Jaycar sells in Australia. Model number is SD1602.
[[Image:0051-top-bare.jpg|none]]
Top-view of the board without the LCD unit. Here you can clearly see the serial shift register chip I used to save on data pins to the mcu.
[[Image:0051-top-with-lcd.jpg|none]]
Top-view of the board with the LCD unit mounted.
[[Image:0051-bottom.jpg|none]]
Working prototype (June 2011)
[[File:0051-lcd-i2c-board.JPG|none]]
Custom pcb for this project
Here is a movie of I2C in action. I slowed down the sending of signals on an I2C master and enabled the display of control characters on the LCD board.
<mediaplayer useSWF=false autoplay=false image=/swf/img/lcd-i2c-demo.jpg>/swf/i2c-demo.flv</mediaplayer>
An explanation of the codes on the display:
S = Start sequence detected
M =
L =
A = LCD generates Acknowledge
L =
P = Stop sequence detected
==Purchasing a board==
(all out of stock!)
de782229f5ca5dccf3acbeb3b20ab7468cd5da81
File:Gettemp vb-express-2005 V8.zip
6
296
1309
2014-01-12T01:25:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Gettemps linux.tar.gz
6
297
1311
2014-01-12T01:34:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0088-AVR-programmer
0
288
1313
1298
2014-01-12T10:49:44Z
Admin
1
wikitext
text/x-wiki
The finished result of this project is to create an AVR-compatible In-Circuit Serial Programmer using an ATtiny85 as the controller. The board will interface using the open-source USB protocol and is able to program a range of AVR compatible microcontrollers with it. The cost is around $16 for which you can easily purchase a fully assembled and tested device, but I just found it so neat to be able to create my own programmer.
The schematic, code and drivers listed on this page are mostly all works of others so I will not take credit for that. I merely have this page here to show you how it's done and what the end result looks like.
* source code
* binary (.HEX)
Firmware version 1.3
[[File:Littlewire v13.zip]]
Firmware version 1.1
[[File:Combined.zip]]
* program the programmer
I used a pololu programmer to program this project onto a new ATtiny85 microcontroller.
These are the commands to flash the hex file into the chip:
(I copied the contents of a little batch file)
<pre>
set PROJECT=littlewire_v13
set PORT=\\.\USBSER000
set GCC_DEVICE=attiny85
set PGM_DEVICE=t85
set PGM_PROTO=avrispv2
echo erase chip
avrdude -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -e
echo write program to chip
avrdude -c %PGM_PROTO% -P %PORT% -p %PGM_DEVICE% -U flash:w:%PROJECT%.hex -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m
</pre>
* Final result
* usage instructions
Before I created my own programmer I was using the (also very simple) programmer from Pololu. In order to program avr's with this programmer I used the following avrdude command line:
Pololu programmer avrdude command to program an ATtiny85
<pre>
set PORT=\\.\USBSER000
set PGM_PROTO=avrispv2
avrdude -F -c %PGM_PROTO% -P %PORT% -p t85 -U flash:w:myproject.hex -D
</pre>
With the new programmer I have to change things slightly, just tell avrdude we're using a different programmer:
<pre>
set PORT=\\.\USBSER000
set PGM_PROTO=usbtiny
avrdude -F -c %PGM_PROTO% -P %PORT% -p t85 -U flash:w:myproject.hex -D
</pre>
* drivers for windows
[[File:LittleWire driver.zip]]
NOTE: the drivers for Linux are already supported in recent Linux kernels.
* source design from LittleWire
http://littlewire.cc/
acc8563dfbcbdf78b4234cf2d2ed281967a10915
File:PCA9535 demo-board copper.jpg
6
304
1332
2014-01-26T09:43:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:PCA9535 demo-board component side.jpg
6
305
1334
2014-01-26T09:45:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:PCA9535-to-DIP18.png
6
306
1337
2014-01-26T10:00:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:PCA9535 Arduino demo.zip
6
307
1349
2014-01-26T10:30:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
PCA9535 IO expansion port
0
299
1354
1353
2014-01-27T05:24:44Z
Admin
1
/* Schematic */
wikitext
text/x-wiki
The PCA9535 and PCA9535C are 24-pin CMOS devices that provide 16 bits of General
Purpose parallel Input/Output (GPIO) expansion for I2C-bus/SMBus applications.
Example schematic and code for Arduino Duemilanove and UNO (and possibly others).
==Schematic==
[[File:PCA9535 demo circuit.png]]
Brief explanation:
* The Arduino provides 5V to the port expander and LEDs through the I2C header
* The Arduino I2C pins are on Analog In port 4(SDA) and 5(SCL) (not shown)
* The INT line is held high to VCC with a 10k pullup resistor
* A 100R current limiting resistor is in line to HDR1:3 to provide +5V for a small probe lead
* The I2C address is set to 0x20 (decimal 32) by pulling A0, A1 and A2 low to ground
* HDR1:0 to 2 and the two LEDs are all on channel 0
* HDR2:0 to 1 are all on channel 1
* 100k pulldown resistors to ground are placed on all input pins
* 4k7 pullup resistors to +5V for the I2C lines are added on the Arduino side of the I2C bus (not shown)
==Demo Circuit Board==
In order to work with the SOIC package I decided to re-route some pins and not break out all ports so I could mount it on a DIP18 socket.
The re-mapped pins and the completed demo board are shown below:
[[File:PCA9535-to-DIP18.png]]
[[File:PCA9535 demo-board component side.jpg]]
[[File:PCA9535 demo-board copper.jpg]]
==Code==
<pre>
/*
Arduino demo code for the PCA9535 I2C port expander.
Compatible with Arduino IDE version 1.0.5
Last modified: 26 January 2014
*/
#include <Wire.h>
// I2C 9535 device address is 0 1 0 0 0 0 0 (0x20, or 0d32)
#define PCA9535_ADDR 32
int ch0=0;
int ch1=0;
void setup()
{
Wire.begin();
// setup channel 0 and 1
Wire.beginTransmission(PCA9535_ADDR);
Wire.write(6); // configure port 0 registers
Wire.write(B00111111); // set bit 6+7 as output, the rest input
Wire.write(B11111111); // set all as input
Wire.endTransmission();
}
void loop()
{
PCA_ReadBytes(); // read the values of channel 0 and 1
// channel 0
if (bitRead(ch0,0))
{
// bit 0 of channel 0 is set high
blinkLed(0,1); // blink one time
}
if (bitRead(ch0,1))
{
// bit 1 of channel 0 is set high
blinkLed(0,2); // blink two times
}
if (bitRead(ch0,2))
{
// bit 2 of channel 0 is set high
blinkLed(0,3); // blink three times
}
// channel 1
if (bitRead(ch1,0))
{
// bit 0 of channel 0 is set high
blinkLed(1,1); // blink one time
}
if (bitRead(ch1,1))
{
// bit 1 of channel 0 is set high
blinkLed(1,2); // blink two times
}
delay(1000);
delay(1000);
}
void blinkLed(int lednr, int times)
{
if (lednr==0)
{
lednr=B01000000; // bit 6 goes to the RED led
} else {
lednr=B10000000; // bit 7 goes to the GREEN led
}
while (times>0)
{
// turn led on I/O 0, pin 6 or 7
Wire.beginTransmission(PCA9535_ADDR);
Wire.write(2); // select IO channel 0
Wire.write(lednr); // turn on port on bit 6 or 7
Wire.endTransmission();
delay(100);
all_off();
delay(300);
times--;
}
}
void all_off()
{
// turn off all outputs
Wire.beginTransmission(PCA9535_ADDR);
Wire.write(2); // select IO channel 0 output registers
Wire.write(B00000000); // turn off all ports on channel 0
Wire.endTransmission();
}
void PCA_ReadBytes()
{
// reads the input registers of the PCA9535 device
// read channel 0 first
Wire.beginTransmission(PCA9535_ADDR);
Wire.write(0); // we want to read channel 0 first
Wire.endTransmission();
Wire.requestFrom(PCA9535_ADDR,2); // read two bytes
if(Wire.available())
{
ch0 = Wire.read(); // read channel 0
ch1 = Wire.read(); // read other channel (channel 1)
}
Wire.endTransmission();
}
</pre>
Download the above code as a .zip file here.
Arduino source code: [[File:PCA9535 Arduino demo.zip]]
==Something on I2C bus speed for the Arduino==
The following blurb on I2C speeds is not relevant in order to get the PCA9535 to work, because it works just fine with the standard Arduino. However, for debugging purposes it is very handy to know that the I2C bus speed can be modified. I didn't have a better place to put this info, so here it is..
The default prescaler is 1, and the default value for TWBR (on the Uno etc.) is 72. Thus:
freq = 16000000 / (16 + 144) = 100000
TWBR prescaler Frequency
12 1 400 kHz (the maximum supported frequency)
32 1 200 kHz
72 1 100 kHz (the default)
152 1 50 kHz
78 4 25 kHz
158 4 12.5 kHz
To set the prescaler to 4 you need to set the bit TWPS0 in TWSR, so for example to have a clock of 12.5 kHz:
<pre>
Wire.begin ();
TWBR = 158;
TWSR |= _BV (TWPS0);
</pre>
The internal buffer used for I2C communications is 32 bytes. That means you can transfer a maximum of 32 bytes in one transaction.
It also isn't particularly clear, but the functions Wire.beginTransmission and Wire.write don't actually send anything. They simply prepare an internal buffer (with a maximum length of 32 bytes) for the transmission. This is so that the hardware can then clock out the data at a high rate. For example:
<pre>
Wire.beginTransmission (SLAVE_ADDRESS); // prepare internal buffer
Wire.write ("hello world"); // put data into buffer
byte result = Wire.endTransmission (); // transmission occurs here
</pre>
Source: http://www.gammon.com.au/forum/?id=10896
a3ba14e1efd62e5547dccba27a98c4e770239b43
File:PCA9535 demo circuit.png
6
301
1355
1352
2014-01-27T05:26:38Z
Admin
1
Admin uploaded a new version of "[[File:PCA9535 demo circuit.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Mcu 0053-avr-fuse-resetter.jpg
6
308
1356
2014-01-27T05:29:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0053-AVR-Fuse-Resetter
0
115
1357
1056
2014-01-27T05:29:39Z
Admin
1
wikitext
text/x-wiki
{{Infobox
| name = 0053-AVR-Fuse-Resetter
| image = [[File:Mcu 0053-avr-fuse-resetter.jpg|150px]]
| imagecaption = description
| author = Marcel Post
| mcu = ATtiny84
| initial_release_date = Month Year
| last_modified_date = Oct 2011
| pcb_layers = 2
| project_status = incomplete
}}
AVR High-voltage Serial Fuse Reprogrammer
==Description==
When playing with fuse bits (e.g. to set clock frequency, watchdog timer, etc..) it's easy to 'brick' your microcontroller. The only way out is to override the fuse bits with High Voltage (just 12V is enough) programming. This project runs code on an ATtiny84 and contains some default reset values for ATtiny fuse bits. Insert your bricked ATtiny in the empty socket and press the button to reset it. Optionally an LCD is provided to give more information on the process.
Adapted from code and design by Paul Willoughby 03/20/2010
http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/
==Timeline==
2012-10-13
* updating this page with what's new:
* re-designed the board without the LCD panel (it's now just a 4-pin header connection)
* ordered a 28pin ZIF socket to hold both 14-pin and 8-pin AVR's
* ordered and received new PCB's from OSH Park (previously Dorkbot PDX). Very good quality (purple boards with gold?plated solder mask) and reasonably priced.
* already built two units of which one has a firmware loaded in it. Had to make several code changes so the code on this site is not the most recent(!)
* will upload the latest designs and source code for AVR ATtiny84 as the programmer/flasher.
* stay tuned.. ;-)
2011-10-23
* verified working of avr resetter code in arduino.
* Added very basic LCD I2C code to ATtiny84
==Schematic==
[[File:0053-sch-v1.0.jpg|thumb|none]]
View schematic as pdf (Oct 2011) [[File:0053-sch-v1.0.pdf]]
By no means finished but a step in the right direction.
==Circuit Board==
[[File:0053-pcb-3d-v1.0.jpg|none]]
[[File:0053-pcb-v1.0.jpg|none]]
By no means finished but a step in the right direction.
==Software==
Latest source code: [[File:0053-avr-fuse-resetter.zip]]
==Release Notes==
==Gallery==
[[File:Mcu 0053-avr-fuse-resetter.jpg]]
==External Links==
http://www.atmel.com/avr/
b6e1829c4942436c43d9e0dee4ca96c0008a1b4a
I2c-master
0
310
1372
2014-03-16T10:59:49Z
Admin
1
Created page with "These code snippets and functions are intended for an I2C master device. Functions: * address an I2C slave and write data to it * address an I2C slave and read data from it ..."
wikitext
text/x-wiki
These code snippets and functions are intended for an I2C master device.
Functions:
* address an I2C slave and write data to it
* address an I2C slave and read data from it
==initialisation==
<pre>
// I2C definitions
int LCD_I2C_DEVICE_ID=58;
#define SCL PA4
#define SDA PA5
#define I2C_SCL_T_HIGH_US 50
#define I2C_SCL_T_LOW_US 50
// Testing i2c reads with 24LC256 EEPROM module
#define I2C_EEPROM 0x50 // ID# of eeprom
int got_ack;
int I2C_STRETCH_TIMEOUT_MS=10; // how long to wait for a slave that's stretching the clock
unsigned int i2c_timeout=65535; // when listening for read replies
</pre>
==functions==
<pre>
// --- I2C Functions ---
// --- I2C Functions ---
// --- I2C Functions ---
void setPin(int line, int state)
{
// set the I2C SDA or SCL PIN
if (state == LOW) // if state = 0
{
// set the pin low
DDRA |= (1 << line); // set line to output
PORTA &= ~(1 << line); // set it to zero
} else {
// set the pin high (let external pull-up resistor bring it high)
DDRA &= ~(1 << line); // set line to input
}
}
void i2c_tx(char d)
{
// SDA is LOW, SCL is high (inherited from START sequence)
// 1010 0000 0 0000 00000 0 0001 0101 0 00010
// 80 << 1 W A
// bring clock low to start data transfer
setPin(SCL,LOW);
_delay_us(I2C_SCL_T_LOW_US);
char x;
//static int b;
for(x=8; x; x--)
{
if(d&0x80)
{
setPin(SDA,HIGH);
} else {
setPin(SDA,LOW);
}
setPin(SCL,HIGH); // strobe clock
// allow for I2C clock stretching (SCL can be held low by slave)
// see I2C_STRETCH_TIMEOUT_MS
int stretch_counter;
for (stretch_counter=0; stretch_counter < I2C_STRETCH_TIMEOUT_MS; stretch_counter++)
{
// allow for some cycles for SCL to go high
if (bit_is_clear(PINA,SCL))
{
// SCL is held low by slave
// we'll just wait a little
_delay_us(5);
} else {
// SCL has risen, ready to move on
stretch_counter = I2C_STRETCH_TIMEOUT_MS;
}
}
_delay_us(I2C_SCL_T_HIGH_US); // if everything went fine we still need to make sure
setPin(SCL,LOW); // we're waiting at least 4us until we can bring SCL LOW
_delay_us(I2C_SCL_T_LOW_US);
d <<= 1; // shift byte
}
// read acknowledge bit if any
_delay_us(I2C_SCL_T_LOW_US);
setPin(SDA,HIGH); // first bring SDA into listening mode
// An addressed i2c slave that wants to set an ACK will have already set SDA low.
// If the slave doesn't respond to the ACK we need to make sure not to see a false
// positive from our own SDA pin
_delay_us(I2C_SCL_T_HIGH_US); // give the bus some time to possibly bring the pin high
setPin(SCL,HIGH); // start the clock pulse
// check if slave set an ack on the SDA line or not
if (bit_is_set(PINA,SDA))
{
got_ack=0;
} else {
got_ack=1;
}
//setPin(SDA,LOW); // we now bring SDA low
//_delay_us(10); // give the bus some time to prevent slaves from detecting this as a false stop? ----- may go
_delay_us(I2C_SCL_T_HIGH_US);
setPin(SCL,LOW); // end the clock pulse
// show ack result here..
// slave detects SCL is low and will release SDA
// need an extra bit of delay here for our I2C LCD Module
// _delay_us(100);
_delay_us(I2C_SCL_T_LOW_US); // this should be 10us or so
_delay_us(I2C_SCL_T_LOW_US); // this should be 10us or so
// -- end of i2c_tx function --
// function ends with:
//
// SDA: HIGH
// SCL: LOW
}
void i2c_start()
{
// SDA goes from high to low while SCL is high
// we expect both SDA and SCL to be high
//_delay_us(500);
//setPin(SDA,HIGH);
//_delay_us(500); // give bus some time to bring SDA high
//setPin(SCL,HIGH);
//_delay_us(100);
setPin(SDA,LOW);
_delay_us(I2C_SCL_T_LOW_US);
}
void i2c_write(char i2c_id)
{
i2c_start();
// send the I2C Device ID
// send as Write (last bit is 0)
i2c_tx(i2c_id<<1);
}
void i2c_stop()
{
// SDA goes from low to high while SCL is high
// we expect SCL to be low but don't know the state of SDA
// therefore we force SCL to be low so we don't accidentally
// generate a .. and then bring down SDA so we begin with
// a known start condition.
setPin(SCL,LOW);
_delay_us(I2C_SCL_T_LOW_US); // give bus some time to bring SCL LOW
setPin(SDA,LOW);
_delay_us(I2C_SCL_T_LOW_US); // give bus some time to bring SDA LOW
// initiate STOP sequence
setPin(SCL,HIGH);
_delay_us(I2C_SCL_T_HIGH_US);
setPin(SDA,HIGH);
_delay_us(I2C_SCL_T_HIGH_US);
}
void i2c_lcd_text(char *StrData)
{
int p = 0;
int q = strlen(StrData);
int temp = 0;
for (p = 0; p < q; p++)
{
temp = StrData[p];
i2c_tx(temp);
}
}
void i2c_lcd_number(int number)
{
int digits;
if (number == 0)
{
digits = 0;
int array[0];
array[0]=0;
i2c_tx(array[0]+48);
} else {
// determine the number of digits
digits = (int) (log(number)/log(10))+1;
// split up the number's digits into an array
int i = digits -1;
int array[digits];
while (number > 0)
{
array[i--] = number % 10;
number /= 10;
}
// send array over i2c
for (i =0; i <= digits-1; i++)
{
i2c_tx(array[i]+48);
}
}
}
void i2c_cls(uint8_t device)
{
// send out Clear LCD command to I2C_LCD device
i2c_write(device);
i2c_tx(12); // blank lcd command
i2c_stop();
}
void i2c_pos (uint8_t device, uint8_t row, uint8_t col)
{
// positions the cursor on an I2C_LCD device
i2c_write(device);
i2c_tx(10); // i2c position command
i2c_tx(row); // row position
i2c_tx(col); // col position
i2c_stop();
}
void i2c_write_number(uint8_t device, int16_t number)
{
// write a number to an I2C_LCD device
i2c_write(device);
i2c_lcd_number(number);
i2c_stop();
}
unsigned char i2c_rxbyte()
{
// read a byte from an i2c slave we just addressed with its ID and the register we wish to read
unsigned char rxbyte=0;
int bitcount=8;
// i2c_tx ends with:
// SDA: HIGH
// SCL: LOW
// the ic2_tx command lastly sent the ack pulse and now has SDA and SCL set to LOW
// we now control the read from the i2c slave device by pulsing SCL and reading SDA
while (bitcount > 0)
{
rxbyte = rxbyte << 1; // shift all bits in rxbyte one position to the left
setPin(SCL,HIGH); // start the clock pulse
_delay_us(I2C_SCL_T_HIGH_US); // give the bus some time to possibly bring the pin high
if (bit_is_set(PINA,SDA))
{
// -- detected bit '1' --
rxbyte |= 1 << 0 ; // sets bit 0 of rxbyte to 1
} else {
// -- detected bit '0' --
}
setPin(SCL,LOW); // stop the clock pulse
_delay_us(I2C_SCL_T_LOW_US); // give the bus some time to possibly bring the pin high
bitcount--; // decrement bitcounter
}
// send ack clock pulse
setPin(SCL,HIGH); // start the clock pulse
_delay_us(I2C_SCL_T_HIGH_US);
setPin(SCL,LOW); // stop the clock pulse
_delay_us(I2C_SCL_T_HIGH_US);
return rxbyte;
}
unsigned char i2c_read(uint8_t i2c_id, uint16_t DEV_REG)
{
// reading a register from an eeprom device
unsigned char read_result=0;
i2c_id = i2c_id<<1; // shift all bits one position to the left (i.e. multiply by 2)
// send start sequence
i2c_start();
// send the I2C Device ID with the R/W bit low (send as Write, last bit is 0)
i2c_tx(i2c_id);
//_delay_us(10);
// send the register we want to query to the device
// for the 74LC256 we need to do this in two goes. First the MSB then the LSB
i2c_tx(DEV_REG >> 8); // MSB
i2c_tx(DEV_REG & 0xFF); // LSB
// i2c_tx alread has a delay at the end
// i2c_tx ends with:
// SDA: HIGH
// SCL: LOW
// -- send repeated start --
// in order to generate a valid repeated-start we must make sure SCL is high
//setPin(SCL,HIGH);
//_delay_us(10);
// -- or --
// send stop
i2c_stop();
_delay_us(I2C_SCL_T_LOW_US);
// send start sequence again
i2c_start();
// i2c_start ends with:
// SDA: LOW
// SCL: HIGH
// i2c_tx will bring SDA low again in order to start a valid transmission
// send the I2C Device ID with the R/W bit high (send as Read, last bit is 1)
i2c_id |= 1 << 0; // set bit 0 to 1
i2c_tx(i2c_id);
// i2c_tx ends with:
// SDA: HIGH
// SCL: LOW
// read data from device, one byte long
read_result=i2c_rxbyte();
i2c_stop();
return read_result;
}
// -- end I2C functions --
// -- end I2C functions --
// -- end I2C functions --
</pre>
==usage==
<pre>
int main()
{
setPin(SDA,HIGH);
setPin(SCL,HIGH);
uint8_t eeadr=0;
int getvalue=0;
while (eeadr < 25)
{
getvalue=i2c_read(I2C_EEPROM,eeadr);
Write_Serial_Number(eeadr);
Write_Serial_Data(',');
Write_Serial_Number(getvalue);
Write_Serial_Text(crlf); // crlf
eeadr++;
}
}
</pre>
e51c8b1809306a94bdd394940f88f63e670407d6
I2C
0
260
1373
1371
2014-03-16T11:01:33Z
Admin
1
wikitext
text/x-wiki
various:
[[i2c-master]]
[[i2c-slave]]
I'm currently working on coding a reliable I2C library that can act as a master, slave or both.
The current library is not a stand-alone file, but needs to be included in the code. Below is the latest (not fully operational) i2cmaster.h, use at own risk.
<pre>
// --- I2C Functions ---
// --- I2C Functions ---
// --- I2C Functions ---
void i2cpin(int line, int state)
{
// set the I2C SDA or SCL PIN
// works on the PORTB registers
if (state == 0)
{
// set the pin low
DDRB |= (1 << line); // set line to output
PORTB &= ~(1 << line); // set it to zero
} else {
// set the pin high (let external pull-up resistor bring it high)
DDRB &= ~(1 << line); // set line to input
}
//_delay_ms(500); // use this as a debug tool
}
void i2c_delay()
{
// default delay in between I2C commands
_delay_ms(10); // seems to hover around 2-3ms
}
void i2c_tx(char d)
{
// SDA is LOW, SCL is HIGH (inherited from i2c-start command)
// bring clock low to start data transfer
i2cpin(SCL,LOW);
char x;
//static int b;
for(x=8; x; x--)
{
if(d&0x80)
{
i2cpin(SDA,HIGH);
} else {
i2cpin(SDA,LOW);
}
i2cpin(SCL,HIGH); // strobe clock
// allow for I2C clock stretching (SCL can be held low by slave)
// see I2C_STRETCH_TIMEOUT_MS
int stretch_counter;
for (stretch_counter=0; stretch_counter < I2C_STRETCH_TIMEOUT_MS; stretch_counter++)
{
// allow for some cycles for SCL to go high
if (bit_is_clear(PINB,SCL))
{
// SCL is held low by slave
// we'll just wait a little
_delay_ms(1);
} else {
// SCL has risen, ready to move on
stretch_counter = I2C_STRETCH_TIMEOUT_MS;
}
}
//_delay_us(1); // 1-3 us
i2cpin(SCL,LOW);
d <<= 1; // shift byte
}
i2cpin(SDA,HIGH); // first bring SDA into listening mode
//_delay_ms(1); // delay no longer needed, this used to be 1.6ms
//_delay_us(600);
// read acknowledge bit if any
// an addressed i2c slave will have already set SDA low
_delay_us(5); // give the bus some time to possibly bring the pin high
i2cpin(SCL,HIGH); // start the clock pulse
_delay_us(5); // this should be 10us or so
if (bit_is_set(PINB,SDA))
{
got_ack=0;
} else {
got_ack=1;
}
i2cpin(SDA,LOW); // we now bring SDA low
_delay_us(10); // give the bus some time? ----- may go
i2cpin(SCL,LOW); // end the clock pulse
// slave detects SCL is low and will release SDA
_delay_ms(3); // this should be 10us or so
// return b;
}
void i2c_start(char i2c_id)
{
// SDA goes from high to low while SCL is high
i2cpin(SDA,HIGH);
_delay_us(10); // give bus some time to bring SDA high
i2cpin(SCL,HIGH);
_delay_us(10);
i2cpin(SDA,LOW);
_delay_us(10);
// send the I2C Device ID
// send as Write (last bit is 0)
i2c_tx(i2c_id<<1);
}
void i2c_stop()
{
// SDA goes from low to high while SCL is high
i2cpin(SDA,LOW);
_delay_us(20); // give bus some time to bring SDA high
i2cpin(SCL,LOW);
_delay_ms(6);
i2cpin(SCL,HIGH);
_delay_ms(6);
i2cpin(SDA,HIGH);
_delay_ms(4);
}
void i2c_lcd_text(char *StrData)
{
int p = 0;
int q = strlen(StrData);
int temp = 0;
for (p = 0; p < q; p++)
{
temp = StrData[p];
i2c_tx(temp);
}
}
void i2c_lcd_number(int number)
{
int digits;
if (number == 0)
{
digits = 0;
int array[0];
array[0]=0;
i2c_tx(array[0]+48);
} else {
// determine the number of digits
digits = (int) (log(number)/log(10))+1;
// split up the number's digits into an array
int i = digits -1;
int array[digits];
while (number > 0)
{
array[i--] = number % 10;
number /= 10;
}
// send array over i2c
for (i =0; i <= digits-1; i++)
{
i2c_tx(array[i]+48);
}
}
}
void i2c_lcd_hex(uint8_t x)
{
// sends one byte in hex (without 0x prefix) to the lcd
char nibble;
/* extract high nibble */
nibble = x & 0xf0; // (resets lower nibble to all zero's)
nibble = x >> 4; // (moves high nibble to lower nibble)
// output the high nibble
if(nibble < 10)
{
i2c_tx(48 + nibble);
} else {
i2c_tx(65 + nibble - 10);
}
/* do the same on the low nibble */
nibble = x & 0x0f;
if(nibble < 10)
{
i2c_tx(48 + nibble);
} else {
i2c_tx(65 + nibble - 10);
}
}
</pre>
usage:
in main()
<pre>
// -- set up lines for I2C --
pinMode(SDA,INPUT);
pinMode(SCL,INPUT);
PORTB = 0; // disable internal pullup resistors
PORTB &= ~(1 << SDA); // set SDA LOW (makes line output)
PORTB &= ~(1 << SCL); // set SCL LOW (makes line output)
i2c_start(LCD_I2C_DEVICE_ID);
i2c_tx(12); //clear screen
i2c_tx(' ');
i2c_lcd_number(voltage_int); // measured voltage, whole numbers
i2c_tx('.');
i2c_lcd_number(voltage_dec1); // decimal 1
i2c_lcd_number(voltage_dec2); // decimal 2
i2c_tx('V');
i2c_tx(' ');
i2c_tx(' ');
i2c_lcd_number(run_counter);
i2c_stop();
</pre>
<pre>
/*
i2cmaster.h
defines functions for bit-banging the I2C protocol on generic I/O pins
Author: M. Post
Last modified: 28 January 2012
Add the following to your main.c in order to make use of this header file:
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
// I2C pin definitions
#define SCL PB0 // Define Clock pin
#define SDA PB1 // Define Data pin
int got_ack;
int LCD_I2C_DEVICE_ID=58;
int I2C_STRETCH_TIMEOUT_MS=100;
<other includes>
#include "i2cmaster.h"
<defines, rest of code, etc..>
*/
void setPin(int line, int state)
{
// set the I2C SDA or SCL PIN
if (state == LOW)
{
// set the pin low
DDRB |= (1 << line); // set line to output
PORTB &= ~(1 << line); // set it to zero
} else {
// set the pin high (let external pull-up resistor bring it high)
DDRB &= ~(1 << line); // set line to input
}
}
void i2c_delay()
{
// default delay in between I2C commands
_delay_ms(10); // seems to hover around 2-3ms
}
void i2c_tx(char d)
{
int stretch_counter;
char x;
// SDA is LOW, SCL is HIGH (inherited from i2c-start command)
// bring clock low to start data transfer
setPin(SCL,LOW);
for(x=8; x; x--)
{
//_delay_us(10); // (additional time inbetween scl pulses)
// if statement: if (d & 0x80)
// 0x80 = 128d = 10000 0000b
if(d&0x80)
{
_delay_us(15);
setPin(SDA,HIGH);
} else {
setPin(SDA,LOW);
}
_delay_us(30); // (additional time before scl pulse)
setPin(SCL,HIGH); // strobe clock
// allow for I2C clock stretching (SCL can be held low by slave)
// see I2C_STRETCH_TIMEOUT_MS
for (stretch_counter=0; stretch_counter < I2C_STRETCH_TIMEOUT_MS; stretch_counter++)
{
// allow for some cycles for SCL to go high
if (bit_is_clear(PINB,SCL))
{
// SCL is held low by slave
// we'll just wait a little
_delay_ms(1);
} else {
// SCL has risen, ready to move on
stretch_counter = I2C_STRETCH_TIMEOUT_MS;
}
}
//_delay_us(10); // additional SCL-high time
setPin(SCL,LOW);
d <<= 1; // shift byte
}
// byte is now sent
// next is to read a possible ack from the slave device
// scl is already set low by the master
setPin(SDA,HIGH); // first bring SDA into listening mode
// read i2c slave acknowledge bit if any
// an addressed i2c slave will set SDA low very quickly
_delay_us(40); // space between the previous SCL pulse
setPin(SCL,HIGH); // start the clock pulse
//_delay_us(5); // this should be 5us or so
if (bit_is_set(PINB,SDA))
{
got_ack=0;
} else {
got_ack=1;
}
setPin(SDA,LOW); // we now bring SDA low (so we don't see a spike on SDA
// when the master brings SCL low again
_delay_us(25); // show a nice long SCL high pulse for easier debugging
setPin(SCL,LOW); // end the clock pulse
// this is also a signal for the i2c slave to release SDA
_delay_us(10); // give the bus some time
}
void i2c_start()
{
// SDA goes LOW while SCL is HIGH
// TODO: check the state of the lines first (they should both be HIGH)
_delay_us(10);
setPin(SDA,LOW); // start condition
_delay_us(10);
}
void i2c_repeatedstart()
{
// SDA goes LOW while SCL is HIGH
// first bring SCL and SDA LOW (SCL and SDA should already be low)
_delay_us(10);
setPin(SCL,LOW);
_delay_us(10);
setPin(SDA,LOW);
// then we bring them both HIGH
_delay_us(10);
setPin(SDA,HIGH);
_delay_us(10);
setPin(SCL,HIGH);
_delay_us(100);
// then we generate the repeated start condition
setPin(SDA,LOW);
_delay_us(100);
setPin(SCL,LOW);
_delay_us(100);
}
void i2c_startRead(char i2c_id)
{
// SDA goes from high to low while SCL is high
i2c_start();
// send the I2C Device ID
// send as Read (last bit is 1)
i2c_id = i2c_id << 1; // shift all bits one position to the left
i2c_id |= 1 << 0; // then set bit 0 to 1
i2c_tx(i2c_id);
}
void i2c_startWrite(char i2c_id)
{
// SDA goes from high to low while SCL is high
i2c_start();
// send the I2C Device ID
// send as Write (last bit is 0)
i2c_id = i2c_id << 1; // shift all bits one position to the left
i2c_id |= 0 << 0; // then set bit 0 to 0
i2c_tx(i2c_id);
}
void i2c_stop()
{
// SDA goes HIGH while SCL is HIGH
// TODO: check if both lines are low
_delay_us(10);
setPin(SCL,LOW);
_delay_us(10);
setPin(SDA,LOW);
_delay_us(10);
setPin(SCL,HIGH);
_delay_us(100); // at least 100 us for I2C_LCD module :-/
setPin(SDA,HIGH); // stop condition
_delay_us(10);
}
void i2c_lcd_text(char *StrData)
{
int p = 0;
int q = strlen(StrData);
int temp = 0;
for (p = 0; p < q; p++)
{
temp = StrData[p];
i2c_tx(temp);
}
}
void i2c_lcd_number(int number)
{
int digits;
if (number == 0)
{
digits = 0;
int array[0];
array[0]=0;
i2c_tx(array[0]+48);
} else {
// determine the number of digits
digits = (int) (log(number)/log(10))+1;
// split up the number's digits into an array
int i = digits -1;
int array[digits];
while (number > 0)
{
array[i--] = number % 10;
number /= 10;
}
// send array over i2c
for (i =0; i <= digits-1; i++)
{
i2c_tx(array[i]+48);
}
}
}
void i2c_lcd_hex(uint8_t x)
{
// sends one byte in hex (without 0x prefix) to the lcd
char nibble;
/* extract high nibble */
nibble = x & 0xf0; // (resets lower nibble to all zero's)
nibble = x >> 4; // (moves high nibble to lower nibble)
// output the high nibble
if(nibble < 10)
{
i2c_tx(48 + nibble);
} else {
i2c_tx(65 + nibble - 10);
}
/* do the same on the low nibble */
nibble = x & 0x0f;
if(nibble < 10)
{
i2c_tx(48 + nibble);
} else {
i2c_tx(65 + nibble - 10);
}
}
unsigned char i2c_rxbyte()
{
unsigned char rxbyte=0;
int bitcount=8;
setPin(SDA,HIGH); // release SDA so we can listen what the slave has to say
// the ic2_tx command lastly sent the ack pulse and now has SDA and SCL set to LOW
// we now control the read from the i2c slave device by pulsing SCL and reading SDA
while (bitcount > 0)
{
rxbyte = rxbyte << 1; // shift all bits in rxbyte one position to the left
setPin(SCL,HIGH); // start the clock pulse
_delay_us(I2C_SCL_T_HIGH_US); // give the bus some time to possibly bring the pin high
if (bit_is_set(PINB,SDA))
{
// -- detected bit '1' --
rxbyte |= 1 << 0 ; // sets bit 0 of rxbyte to 1
} else {
// -- detected bit '0' --
}
setPin(SCL,LOW); // stop the clock pulse
_delay_us(I2C_SCL_T_LOW_US); // give the bus some time to possibly bring the pin high
bitcount--; // decrement bitcounter
}
setPin(SCL,HIGH);
return rxbyte;
}
unsigned char i2c_read(uint8_t i2c_id, uint16_t DEV_REG)
{
// reading the memory address contents from an I2C Slave Device
unsigned char read_result=0;
// send start sequence as write (so we can specify which address we want to read)
i2c_startWrite(i2c_id); // sends i2c start condition + i2c address+0(w)
// send the address word we want to query on the device
// for the 24LC256 we need to do this in two goes. First the MSB then the LSB
i2c_tx(DEV_REG>>8); // shift 8 bits to the right to get the high byte
i2c_tx(DEV_REG & 0xff); // mask out the lower 8 bits to get the low byte
// -- send repeated start --
i2c_repeatedstart();
// send the I2C Device ID as Read (last bit is 1)
i2c_id = i2c_id << 1; // shift all bits one position to the left
i2c_id |= 1 << 0; // then set bit 0 to 1
i2c_tx(i2c_id);
// the slave will acknowledge and then transmit the 8-bit data word
// read data from device, one byte long
read_result=i2c_rxbyte();
i2c_stop();
return read_result;
}
</pre>
42c5b238c6eb64431d60dfdb1b4cd07d00f367f7
I2c-slave
0
311
1374
2014-03-16T11:05:34Z
Admin
1
Created page with "These code snippets and functions are intended for an I2C slave device. Functions: * listen on a set I2C device ID and issue an acknowledge bit when addressed * read incomin..."
wikitext
text/x-wiki
These code snippets and functions are intended for an I2C slave device.
Functions:
* listen on a set I2C device ID and issue an acknowledge bit when addressed
* read incoming bytes when addressed (i.e. master sends the slave a 'write')
* detect incoming read requests (i.e. when master sends us the write/read/address sequence)
* reply back to read requests (i.e. master sets the clock, slave sets SDA)
(code available, just not yet copied here)
9c0d8a2161f8aebfa4baab83305bd976d7aa4d8d
File:ISL1208.pdf
6
312
1376
2014-03-17T07:07:04Z
Admin
1
I2C Realtime Clock
wikitext
text/x-wiki
I2C Realtime Clock
c720bd66d8e91fe9df5d4d61bb535d68f818aea4
File:24LC256-512.pdf
6
313
1378
2014-03-17T07:09:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
C and C++
0
174
1383
956
2014-03-24T11:01:54Z
Admin
1
wikitext
text/x-wiki
C code examples
[[Tips_n_Tricks]]
[[Data_Types]]
[[ATtiny85_ADC]]
[[ATtiny85_shiftout]]
[[ATtiny85_PWM]]
[[ATtiny84_PWM]]
98c5cc7fa4751b2b43d4fe9e130e14343abfc53d
Dovecot basic
0
271
1388
1387
2014-04-24T01:57:21Z
Admin
1
/* IMAP sync with Gmail */
wikitext
text/x-wiki
Dovecot basic
* dovecot-imapd
* exim4
* fetchmail
<pre>
apt-get install dovecot-imapd exim4 fetchmail
</pre>
===setting up exim===
<pre>
dpkg-reconfigure exim4-config
</pre>
General type of mail configuration: internet site
System mail name: mydomain.com
IP-addresses to listen on for incoming SMTP connections: No value (all interfaces)
Other destinations for which mail is accepted: mydomain.com
Domains to relay mail for: No value (no other domains)
Machines to relay mail for: No value (no other machines)
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Delivery method for local mail: Maildir format in home directory
Split configuration into small files? Yes
==setting up dovecot==
create a new file /etc/dovecot/passwd
<pre>
test:{PLAIN}pass
bill:{PLAIN}secret
timo@example.com:{PLAIN}hello123
dave@example.com:{PLAIN}world234
joe@elsewhere.org:{PLAIN}whee
jane@elsewhere.org:{PLAIN}mypass
</pre>
To store passwords encypted, use:
<pre>
doveadm pw -s ssha
Enter new password: foo
Retype new password: foo
{SSHA}DNODS3ZrOq1bu2MasNk79LxHhlU9iI03
</pre>
Note that you won't get the same output after {SSHA} as above, because Dovecot uses random salts when creating the SSHA hash. This means that even if multiple users have the same password, you won't know that because their hashes are different.
The passwd file entry would be:
<pre>
bill:{SSHA}DNODS3ZrOq1bu2MasNk79LxHhlU9iI03
</pre>
With the 2.x versions of Dovecot the configuration files have been split up (as opposed to a single dovecot.conf file in 1.x versions).
Below are listed the modifications required on the default dovecot config files (after a fresh installation).
* /etc/dovecot/dovecot.conf
Leave as-is.
* /etc/dovecot/conf.d/10-auth.conf
<pre>
disable_plaintext_auth = no
auth_mechanisms = plain
!include auth-system.conf.ext
</pre>
* /etc/dovecot/conf.d/10-mail.conf
<pre>
mail_location = maildir:~/Maildir
</pre>
* /etc/dovecot/conf.d/auth-passwdfile-conf.ext
<pre>
passdb {
driver = passwd-file
args = /etc/dovecot/users
}
userdb {
driver = passwd-file
args = uid=vmail gid=vmail home=/home/vmail/%u
}
</pre>
==setting up fetchmail==
~/.fetchmailrc
<pre>
poll localhost with proto POP3
user abc@xyz.org
pass bill123
is yyy@gmail.com here
</pre>
==IMAP sync with Gmail==
apt-get install offlineimap
* offlineimaprc example
<pre>
[general]
accounts = Gmail
maxsyncaccounts = 1
[Account Gmail]
localrepository = Local
remoterepository = Remote
maxage = 365
[Repository Local]
sep = /
type = Maildir
localfolders = /disk/mail/dovecot/varvmail/mydomain.com/gmail/Maildir
nametrans = lambda folder: re.sub('Junk', '[Gmail].Spam',
re.sub('Drafts', '[Gmail].Drafts',
re.sub('Inbox', '[Gmail].INBOX',
re.sub('Trash', '[Gmail].Bin',
re.sub('Sent', '[Gmail].Sent Mail',
re.sub('Flagged', '[Gmail].Starred',
re.sub('Trash', '[Gmail].Trash',
re.sub('Important', '[Gmail].Important',
re.sub('Archive', '[Gmail].All Mail', folder)))))))))
[Repository Remote]
type = Gmail
remotehost = imap.gmail.com
remoteuser = my.email.address@gmail.com
remotepass = mypassword
ssl = yes
maxconnections = 3
realdelete = no
## One-way synching. Perfect for backups.
readonly = true
nametrans = lambda folder: re.sub('.*Spam$', 'Junk',
re.sub('.*Drafts$', 'Drafts',
re.sub('.*INBOX$', 'Inbox',
re.sub('.*Sent Mail$', 'Sent',
re.sub('.*Starred$', 'Flagged',
re.sub('.*Trash$', 'Trash',
re.sub('.*Bin$', 'Trash',
re.sub('.*Important$', 'Important',
re.sub('.*All Mail$', 'Archive', folder)))))))))
</pre>
Usage:
host#~: offlineimap -c offlineimaprc
Afterwards I reassign vmail as owner and group to all folders to be sure that messages are not left as root:root.
host#~: chmod -R vmail:vmail /disk/mail/dovecot/varvmail
4736c12acdf9a913d203817e9a28c7ad31f70435
File:0055-rs232-tempsensor.zip
6
47
1395
1394
2014-04-25T22:43:47Z
Admin
1
Admin uploaded a new version of "[[File:0055-rs232-tempsensor.zip]]": Reverted to version as of 23:13, 31 August 2011
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0055-rs232-tempsensor v2.zip
6
316
1396
1393
2014-04-25T22:44:08Z
Admin
1
Admin uploaded a new version of "[[File:0055-rs232-tempsensor v2.zip]]"
wikitext
text/x-wiki
with added support for DS18B20
c37f09aa8a7634a8708dbf8d371a076a51b30a8b
File:IMG 20140426 084813.jpg
6
317
1398
2014-05-06T02:51:00Z
Admin
1
rs232-tempsensor-attiny85-on-custom-pcb
wikitext
text/x-wiki
rs232-tempsensor-attiny85-on-custom-pcb
5d18399a130bbc9fe61d80fc4be94ca2c2747d21
Mcu 0093-NiMH-battery-charger
0
315
1404
1403
2014-05-15T04:03:39Z
Admin
1
wikitext
text/x-wiki
One of my other projects is a handheld data logger. All along I wanted it to run off batteries but only realised later in the design phase that I wanted it to be powered by rechargeable batteries and use the power from a USB connection to recharge the batteries.
I now realise that having a small, customisable charge controller is just the thing I need. That's where this project comes in. It can be used as a stand-alone application to recharge NiMH batteries (initially this design only caters for 2 NiMH AA batteries in series).
Design criteria:
* use 2x NiMH batteries in series for 3V
* use the USB port to obtain the maximum charge current
* use battery temperature measurement for deltaT detection
* use battery voltage measurement for -deltaV detection
3e44fafa5ae10e205ed0a359a5b2c8a1f9490b16
File:Ambox notice.png
6
322
1455
2014-05-21T00:41:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Info
10
321
1464
1463
2014-05-21T00:55:10Z
Admin
1
wikitext
text/x-wiki
{| class="wikitable"
|- style="vertical-align:top"
| style="width:80px; text-align:center;" |
[[File:Ambox notice.png]]
{{{id|Info}}}
| style="text-align:left;"|{{{info}}}
|}
cbc757ab26b057880bb62022b381eb46888b9f9b
File:TODO icon.png
6
323
1465
2014-05-21T00:58:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Todo
10
324
1466
2014-05-21T00:59:26Z
Admin
1
Created page with "{| class="wikitable" |- style="vertical-align:top" | style="width:80px; text-align:center;" | [[File:TODO_icon.png]] {{{id|TODO}}} | style="text-align:left;"|{{{todo}}} |}"
wikitext
text/x-wiki
{| class="wikitable"
|- style="vertical-align:top"
| style="width:80px; text-align:center;" |
[[File:TODO_icon.png]]
{{{id|TODO}}}
| style="text-align:left;"|{{{todo}}}
|}
54345bb4538bd83afb9a2f9d164a35145f421988
File:0084-pfet-vdiv-0.png
6
325
1469
2014-05-21T11:06:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian Magpie.jpg
6
328
1479
2014-06-29T08:06:11Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Noisy Miner.jpg
6
329
1482
2014-06-29T08:10:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian Pelican.jpg
6
330
1484
2014-06-29T08:13:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Laughing Kookaburra.jpg
6
331
1486
2014-06-29T08:17:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blackfacedcuckooshrike.jpg
6
332
1487
2014-06-29T08:19:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grey-Butcherbird.jpg
6
333
1488
2014-06-29T08:21:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Rainbow lorrikeet.jpg
6
334
1490
2014-06-29T08:22:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Noisy friarbird.jpg
6
335
1491
2014-06-29T08:24:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Crested pigeon.jpg
6
336
1492
2014-06-29T08:26:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Magpie lark.jpg
6
337
1493
2014-06-29T08:30:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blind snake.jpg
6
338
1495
2014-06-29T08:33:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Earthworm.jpg
6
339
1496
2014-06-29T08:37:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:White-grub.jpg
6
340
1497
2014-06-29T08:47:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Green tree frog.jpg
6
341
1498
2014-06-29T08:50:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:St Andrews Cross Spider.jpg
6
342
1501
2014-06-29T08:53:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Tea Tree.jpg
6
343
1503
2014-06-29T08:57:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Redback spider.jpg
6
345
1506
2014-06-29T09:12:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Huntsman spider.jpg
6
346
1507
2014-06-29T09:18:46Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Mud Nest Wasp.jpg
6
347
1508
2014-06-29T09:22:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue Banded Bee.jpg
6
348
1509
2014-06-29T09:25:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Eastern Rosella.jpg
6
349
1511
2014-06-29T09:28:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Silver-eye.jpg
6
350
1512
2014-06-29T09:30:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Scaly Breasted Lorrikeet.jpg
6
351
1513
2014-06-29T09:31:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Asian koel.jpg
6
352
1514
2014-06-29T09:33:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pied Currawong.jpg
6
353
1516
2014-06-29T09:44:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Common Crow Butterfly.jpg
6
354
1517
2014-06-29T09:52:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Monarch butterfly.jpg
6
355
1518
2014-06-29T09:54:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue Triangle Butterfly.jpg
6
356
1519
2014-06-29T09:55:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Callistemon.jpg
6
357
1520
2014-06-29T09:58:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Melaleuca.jpg
6
359
1522
2014-06-29T10:01:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue-tongue Lizard.jpg
6
360
1526
2014-06-29T10:08:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Spotted Ctenotus Skink.jpg
6
361
1527
2014-06-29T10:11:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian Cockroach.jpg
6
362
1529
2014-06-29T10:16:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Common blue butterfly.jpg
6
363
1530
2014-06-29T10:28:19Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Giant Green Grasshopper.jpg
6
364
1531
2014-06-29T10:31:11Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Imperial White Butterfly.jpg
6
365
1532
2014-06-29T10:34:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Cabbage white butterfly.jpg
6
366
1533
2014-06-29T10:36:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Indian Myna.jpg
6
367
1535
2014-06-29T10:38:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian wood duck.jpg
6
368
1536
2014-06-29T10:40:47Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian Raven.jpg
6
369
1537
2014-06-29T10:42:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Christmas Beetle.jpg
6
370
1539
2014-06-29T10:46:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Redeye cicada.jpg
6
371
1540
2014-06-29T10:49:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Floury Baker cicada.jpg
6
372
1541
2014-06-29T10:52:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Ladybird-Harmonia conformis.jpg
6
373
1543
1542
2014-06-29T10:53:48Z
Admin
1
Admin uploaded a new version of "[[File:Ladybird-Harmonia conformis.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Ladybird-Coccinella transversalis.jpg
6
374
1545
2014-06-29T10:56:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian sheep blowfly.jpg
6
375
1546
2014-06-29T10:58:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Hoverfly.jpg
6
376
1548
2014-06-29T11:02:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
2014 VK Contest Dates
0
309
1550
1397
2014-07-03T01:35:35Z
Admin
1
wikitext
text/x-wiki
2014 VK Contest Dates (Phone)
<pre>
Date Name Start End Bands
------------------------------------------------------------------------
15-16 Mar John Moyle 0100 - 0059 (24hrs) All bands
3 May Harry Angel 1000 - 1146 (106mins) 3535 - 3665 kHz
10 May VK Trans Tasman 0800 - 1400 (6hrs) 80m
19 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m
16-17 Aug Rememberance Day 0300 - 0259 (24hrs) All bands
16-17 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
4-5 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
Dates in UTC
0747288c9867671aa519c403a1d973431276d9ea
File:Common brushtail possum.jpg
6
377
1551
2014-07-27T22:58:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Sound-alsa
0
378
1559
1558
2014-07-29T00:27:29Z
Admin
1
wikitext
text/x-wiki
ALSA (Advanced Linux Sound Architecture)
My main focus when I write these pages is on getting sound to work properly with a Raspberry Pi. The techniques in these notes may work on other systems but I have created this page to keep track of RPi related sound information.
== default RPi (Raspbian) sound settings ==
== disabling the on-board sound card ===
/etc/modules
/etc/modprobe.d/modules
(to be edited..)
== measuring sound volume input level ==
* display the current input level of sound presented to the recording device
<pre>
arecord -Dhw:0 -c2 -d 0 -fS16_LE /dev/null -vvv
</pre>
It just starts a recording but sends the recording to /dev/null rather than saving it, and then around every 10ms it spits back a new line which looks like this:
Max peak (2000 samples): 0x000028ca ####### 31%
Max peak (2000 samples): 0x00002872 ####### 31%
Max peak (2000 samples): 0x000023de ###### 28%
Max peak (2000 samples): 0x00002bf3 ####### 34%
Max peak (2000 samples): 0x00002cb1 ####### 34%
* display the sound system's gain setting of the input channel
<pre>
123
</pre>
Nothing here yet
== alsa config ==
/etc/asound.conf or ~/.asoundrc
<pre>
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:1,0"
}
}
</pre>
This little ALSA configuration setting uses the default sound card as playback device (hw:0,0) and sets hw:1,0 (that suppose to be your USB-mic) to become the default capture device.
http://wiki.audacityteam.org/wiki/USB_mic_on_Linux
ab0fd72b23e941ee1788326fbde36efe82cb8a86
Rpi-websdr
0
380
1562
2014-07-29T00:39:33Z
Admin
1
Created page with "WebSDR is a Software-Defined Radio receiver connected to the internet, allowing many listeners to listen and tune it simultaneously. SDR technology makes it possible that all ..."
wikitext
text/x-wiki
WebSDR is a Software-Defined Radio receiver connected to the internet, allowing many listeners to listen and tune it simultaneously. SDR technology makes it possible that all listeners tune independently, and thus listen to different signals; this is in contrast to the many classical receivers that are already available via the internet.
http://websdr.org/
==Setup websdr on Raspberry Pi==
The installer package contains binaries for x86 and ARM. The latter can be used to run on RPi hardware (ARM6).
* soundcard setup
remove all pulseaudio things as it is plainly confusing
use an external sound card that can capture STEREO audio
* Softrock 40 SDR receiver
hook up to 40m antenna and send audio out (I/Q) to sound card
* java runtime environment
e9b0bfa87b68b55ac82e2d73de51145066572623
File:R820T.jpg
6
382
1564
2014-07-29T00:47:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Rtlsdr r820t mini float.jpg
6
383
1565
2014-07-29T00:48:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:RTL1090 and VirtualRadar.jpg
6
384
1567
2014-07-29T00:50:32Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Australian Band Plans 140709.pdf
6
385
1571
2014-07-30T00:32:05Z
Admin
1
WIA - Australian Amateur Band Plans - updated 09/07/2014
wikitext
text/x-wiki
WIA - Australian Amateur Band Plans - updated 09/07/2014
cabd06f95b5614d782ea9d5278aa30097df8ab7b
Aprs-soundmodem
0
278
1574
1248
2014-08-04T03:22:03Z
Admin
1
wikitext
text/x-wiki
This page describes the modifications and setup required to get a linux box (a Raspberry Pi) working as an aprs iGate.
==sound levels==
Alsa is used for the sound system. To check the proper input levels use the command:
<code>
arecord -Dhw:0 -c2 -d 0 -fdat /dev/null -vvv
</code>
This will show a rolling output of the recorded sound levels. More alsa options: [[alsa]]
http://forums.whirlpool.net.au/archive/1853993
Alsamixer and aumix can both set the sound levels and the following settings are near optimal for me:
Alsamixer:
PCM Capture: Line
Line capture input level: 70
Everything else in alsamixer can be set to mute
Btw, if F4 doesn't toggle the recording view, try the TAB key
Aumix:
Recording device: Line
Pcm level: 100%
All other levels (including line, as it's line-out) can be set to zero
== test soundmodem output ==
a program called netcat (or ncat) can be used to send single character to the soundmodem ip address (if using MKISS).
syntax:
<code>
netcat -u 44.10.10.1 5000
</code>
when issuing the above command user input is expected. Simply type a letter, followed by <ENTER> and the soundmodem should start making AX.25 noises.
fc10019b818c77a00f8b80393f0cc037758a8cde
File:Rpi-shutdown-button-schematic.png
6
386
1582
1576
2014-09-17T11:34:19Z
Admin
1
Admin uploaded a new version of "[[File:Rpi-shutdown-button-schematic.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Rpi-shutdown-button-text.jpg
6
387
1583
1580
2014-09-17T11:40:11Z
Admin
1
Admin uploaded a new version of "[[File:Rpi-shutdown-button-text.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:AH AD9850 20121026.zip
6
389
1588
2014-09-27T08:03:55Z
Admin
1
Arduino AVR library for the AD9850 DDS module. Unzip and place directory in the Arduino tree under C:\program files\Arduino\hardware\arduino\avr\libraries\AH_AD9850
wikitext
text/x-wiki
Arduino AVR library for the AD9850 DDS module. Unzip and place directory in the Arduino tree under C:\program files\Arduino\hardware\arduino\avr\libraries\AH_AD9850
59b28156b047156760d5848c863c284b0b777c1f
File:MCU0085-AD9850 signal generator v0.03.zip
6
390
1591
2014-09-27T08:20:52Z
Admin
1
arduino project files for a signal generator using the AD9850 DDS module and a 2x16 LCD module.
wikitext
text/x-wiki
arduino project files for a signal generator using the AD9850 DDS module and a 2x16 LCD module.
cae18a5b1385a41cc1ca538ae0ddcd7c9d0799f0
AD9850 wave generator
0
388
1592
1590
2014-09-27T08:21:33Z
Admin
1
wikitext
text/x-wiki
The AD9850 is a low-cost DDS signal generator module that can easily produce signals from 0Hz to 40MHz.
I built one one an Arduino expansion board and added a 2x16 character LCD module and a rotary encoder knob.
Here is the library for adding AH_AD9850.h to the project.
[[File:AH_AD9850_20121026.zip]]
Unzip and place directory in the Arduino tree under C:\program files\Arduino\hardware\arduino\avr\libraries\AH_AD9850
Arduino project files (included AH_AD9850 library files):
[[File:MCU0085-AD9850 signal generator v0.03.zip]]
Source for the AD9850 libraries:
http://arduino.alhin.de/index.php?n=7
http://arduino-Projekte.de
1e38b780317251c951e98ad0b0e9f909d21a5dc8
File:IC-207H-to-TNC-Pi cable.jpg
6
393
1613
2014-10-07T00:59:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Otusb.jpg
6
394
1615
2014-10-07T02:20:24Z
Admin
1
OpenTracker USB TNC
wikitext
text/x-wiki
OpenTracker USB TNC
8423cbae9d630632c278fcc7b0f22fc0e8964eda
File:ACP-webgui.png
6
396
1618
2014-10-07T02:24:47Z
Admin
1
APRS Control Panel - web gui
wikitext
text/x-wiki
APRS Control Panel - web gui
255a8b580ef828a204fb7ac076cd84c69e99f898
File:Tnc-pi.jpg
6
397
1619
2014-10-07T02:27:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Rpi.jpg
6
398
1620
2014-10-07T02:31:54Z
Admin
1
Raspberry Pi Model B (with Ethernet, 2x USB and Composite-Out connector)
wikitext
text/x-wiki
Raspberry Pi Model B (with Ethernet, 2x USB and Composite-Out connector)
a1244afc2d751cd1d8f0df2b2f4b19cd2f5844c7
File:Cmedia-CM106-USB-soundcard.jpg
6
399
1622
2014-10-07T03:28:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IC-207H front.jpg
6
400
1624
2014-10-07T03:40:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Protocols dealing with APRS
0
401
1631
1630
2014-10-22T02:12:20Z
Admin
1
wikitext
text/x-wiki
Over time I hope to expand this page and complete it with relevant details about setting up an APRS station.
What is:
* [[AX.25]]
* [[APRS-protocol]]
* [[MIC-E]]
* [[APRS-path]]
* [[APRS-packet-timestamping]]
2afe2a5e0b0821a9cf92f591c731cebd7fd51168
File:APRS101.PDF
6
403
1633
2014-10-22T02:17:10Z
Admin
1
APRS Protocol Reference document, version 1.0.1, 29 August 2000
wikitext
text/x-wiki
APRS Protocol Reference document, version 1.0.1, 29 August 2000
8a9b93ae305e1217366ee95780a94a9c7301455a
APRS-protocol
0
402
1635
1632
2014-10-22T02:19:16Z
Admin
1
wikitext
text/x-wiki
The main documentation for the APRS protocol is listed on www.aprs.org.
The document can either be downloaded from their website
http://www.aprs.org/doc/APRS101.PDF
..alternatively, a local copy is hosted on this site as well.
[[File:APRS101.PDF]]
215057721427aae8740b925c1e28b28362abbafd
File:WIDE1-1settings.txt
6
406
1644
2014-10-23T23:16:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
APRS-path
0
405
1646
1645
2014-10-27T03:41:05Z
Admin
1
wikitext
text/x-wiki
The PATH settings when configuring an APRS tracker, Digipeater or fill-in Digi is key to a successful participation in an APRS network.
Example APRS path:
<PRE>
WIDE1-1, WIDE2-1
</PRE>
The first number in a N-N type path is the total number of digi hops desired. The
second one is the number of potential hops remaining as the packet is transmitted
from a given digipeater.
The following recommendations were obtained over time by reading many documents, absorbing third-party information from experienced operators of APRS nodes and first-hand experience of running an APRS station in mixed environments.
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Application</b>
|style="background-color:#f2f2f2;"|<b>Path</b>
|style="background-color:#f2f2f2;"|<b>Cycle-Time</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|Digipeater
|WIDE2-1
|30m
|repeats direct and appropriate other digi's
|-
|Fill-in Digi
|WIDE1-1
|30m
|repeats direct packets, does not repeat heard packets from other digi's or fill-in's
|-
|RX-only iGate
|WIDE1-1
|30m
|sends direct packets to the internet, does not send heard packets from other digi's or fill-in's
|-
|Mobile Tracker
|WIDE1-1,WIDE2-1
|120s
|
|}
Resources:
[[File:WIDE1-1settings.txt]]
http://www.aprs.net.au/vhf/national-2m-aprs-network
http://wa8lmf.net/DigiPaths/index.htm
879618fbd5af398670fb1f992f14d32428a68880
File:Opamp-NE5532 highpass-pre-emp single.zip
6
408
1654
2014-10-30T21:54:05Z
Admin
1
LTspice model for an audio HPF
wikitext
text/x-wiki
LTspice model for an audio HPF
27baaae7fd4927d27c6171d992c318ac78a5e664
File:High-pass-ss.png
6
409
1655
2014-10-30T21:55:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NE5532.zip
6
410
1657
2014-10-30T21:58:34Z
Admin
1
LTspice library for the NE5532 dual op-amp
wikitext
text/x-wiki
LTspice library for the NE5532 dual op-amp
ef58a27b58db41438f1cc6297357982098594a58
File:Opamp-NE5532 lowpass-de-emp single.zip
6
411
1658
2014-10-30T22:01:05Z
Admin
1
LTspice LPF model
wikitext
text/x-wiki
LTspice LPF model
8d7e54e2fe503515a10abe6cc5f171a67a0cd08d
File:Low-pass-ss.png
6
413
1663
2014-10-30T22:19:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NE5532 HPF.jpg
6
414
1666
2014-10-31T05:29:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TNC-Pi comms-cable.jpg
6
415
1668
2014-11-01T00:13:35Z
Admin
1
interface cable for IC-207H to TNC-Pi
wikitext
text/x-wiki
interface cable for IC-207H to TNC-Pi
c03e0cd7867dd0b77a0758f4cf5c2bd88145def5
File:LPF-HPF prototype1.jpg
6
416
1670
2014-11-02T02:58:14Z
Admin
1
Prototype 1, the left the HPF, right the LPF
wikitext
text/x-wiki
Prototype 1, the left the HPF, right the LPF
c546cc484588881d42687f5be7905b439478b960
File:LPF-HPF prototype1 box.jpg
6
417
1671
2014-11-02T03:00:25Z
Admin
1
filter circuit board mounted inside enclosure
wikitext
text/x-wiki
filter circuit board mounted inside enclosure
a517738e24704e2c7ef4fec9150a6c4bcfe33421
Opamp-filters
0
407
1673
1672
2014-11-02T03:05:28Z
Admin
1
wikitext
text/x-wiki
Single-Supply (no negative voltage required) first-order (single-pole, 6dB/Octave, 20dB/Decade) audio filters.
These filters are optimised to provide 6dB/Octave for the 1200Hz and 2200Hz tones required for Packet or APRS transmissions over FM.
* Prototype #1
[[File:LPF-HPF prototype1.jpg|200px|thumb|none|veroboard with HPF (left) and LPF (right)]]
[[File:LPF-HPF prototype1 box.jpg|200px|thumb|none|circuit board inside enclosure]]
2014-11-02 -- completed a first prototype housing both the LPF and HPF and ready for testing with the TNC-Pi and IC-207H. A dual-opamp package is used (NE5532) and since both designs work off a single-supply all grounds can be nicely connected together. Further testing will reveal if this design is up for the task.
==Low-Pass Filter (De-Emphasis)==
[[File:Low-pass-ss.png|200px|thumb|none|LTspice trace and schematic of the filter in action]]
LTspice LPF Model: [[File:Opamp-NE5532 lowpass-de-emp single.zip]]
Ltspice NE5532 dual op-amp library: [[File:NE5532.zip]]
==High-Pass Filter (Pre-Emphasis)==
[[File:NE5532 HPF.jpg|200px|thumb|none|veroboard prototype of the High-Pass filter]]
[[File:High-pass-ss.png|200px|thumb|none|LTspice trace and schematic of the filter in action]]
LTspice HPF Model: [[File:Opamp-NE5532 highpass-pre-emp single.zip]]
LTspice NE5532 dual op-amp library: [[File:NE5532.zip]]
d0aae1d1910828f2c0b4b9e94d1bafb556a3f1e6
File:Lilly pilly.jpg
6
418
1674
2014-11-02T07:45:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nerium oleander.jpg
6
419
1676
2014-11-02T07:49:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
ARS on Linux - Software Tools and utilities
0
422
1688
2014-11-08T09:43:11Z
Admin
1
Admin moved page [[ARS on Linux - Software Tools and utilities]] to [[APRS on Linux - Software Tools and utilities]]
wikitext
text/x-wiki
#REDIRECT [[APRS on Linux - Software Tools and utilities]]
a65f5eb0cebf3c0dcaefb0206d13d7557c1ded75
APRS on Linux - Software Tools and utilities
0
421
1691
1690
2014-11-08T09:46:37Z
Admin
1
wikitext
text/x-wiki
==Sound==
==disk image backup and restore==
[[Disk-Imaging]]
==updating the software==
http://www.raspberrypi.org/documentation/raspbian/updating.md
c34205990c6efdca265a09a9b42d5f8b0f06222c
Rpi-aprs-asound.conf
0
423
1693
2014-11-08T10:07:40Z
Admin
1
Created page with "<pre> /etc/asound.conf </pre> The following configuration file sets the first (device 0) sound card as the default. This can be changed to make another device the default dev..."
wikitext
text/x-wiki
<pre>
/etc/asound.conf
</pre>
The following configuration file sets the first (device 0) sound card as the default. This can be changed to make another device the default device, such as an external USB Sound Card. Another way to change the order of the numbering of a system with multiple sound cards is to edit /etc/modprobe.d/alsa-config... and override the numbering there.
This configuration file is for a system that has the native raspberry pi (audio out only) sound card disabled by blacklisting the broadcom drivers and sets the external (and only) sound card as the default. Stricly speaking this is not required but since the process to get aprs going is still in a transitional process we will continue to use this for now.
<pre>
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:0,0"
}
}
</pre>
If you wish to retain the RPi on-board sound card function you could update hw:0,0 to hw:1,0 to make the external sound card the default but you will have to make sure the order of these cards is correct.
dd5ce232b8149a473c2e91d4dab5dbe84bad3154
Rpi-aprs-cmdline.txt
0
424
1694
2014-11-08T10:14:30Z
Admin
1
Created page with "<pre> /boot/cmdline.txt </pre> The file cmdline.txt in the /boot directory can configure additional TTY's. In case the serial port of the TNC-Pi board is used it is a require..."
wikitext
text/x-wiki
<pre>
/boot/cmdline.txt
</pre>
The file cmdline.txt in the /boot directory can configure additional TTY's. In case the serial port of the TNC-Pi board is used it is a requirement to remove some of the tty settings in this file.
The original Raspberry Pi /boot/cmdline.txt file contains a single line with the following arguments:
<pre>
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
</pre>
To use the TNC-Pi board, take out the following two arguments:
* console=ttyAMA0,115200
* kgdboc=ttyAMA0,115200
New config line:
<pre>
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
</pre>
c9d2a9a401af11260a3e18476e843fee15fef53b
Rpi-aprs-axports
0
425
1697
1696
2014-11-08T10:29:29Z
Admin
1
wikitext
text/x-wiki
<pre>
/etc/ax25/axports
</pre>
The axports file configures the link between an AX.25 interface and the callsign it's working for.
<pre>
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
sm0 VK2HAQ-1 1200 255 7 VHF APRS (1200 bps)
</pre>
The first column [name] (here 'sm0', without /dev/) needs to match the system's interface name:
Example:
<pre>
root@aprs:/etc# ifconfig sm0
sm0 Link encap:AMPR AX.25 HWaddr VK2HAQ-1
inet addr:44.128.0.2 Bcast:44.128.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:256 Metric:1
RX packets:113 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:8662 (8.4 KiB) TX bytes:0 (0.0 B)
root@aprs:/etc#
</pre>
The second column [callsign] (here 'VK2HAQ-1') needs to match the '$mycall' variable in /etc/aprx.conf:
Example:
<pre>
<interface>
ax25-device $mycall
tx-ok false # transmitter enable defaults to false
#telem-to-is false # set to 'false' to disable
</interface>
</pre>
2dbb9f9fa7c624bd8e53fae770ee00700ee6d615
Rpi-aprs-CM106-sound-settings
0
427
1704
1702
2014-11-08T10:53:41Z
Admin
1
wikitext
text/x-wiki
Several methods exist to load and save sound card settings under linux. Since I wanted a non-gui method of setting the sound card's properties I found that the asound tool does exactly that. The nameing of the various controls and registers will probably be different for every sound card so check with 'amixer controls' what those registers are called before running this script.
[[File:Cmedia-CM106-USB-soundcard.jpg|200px|thumb|none|CMedia CM106 USB Sound Card]]
<pre>
#!/bin/sh
# pre-sets sound device mixer controls
# find out which controls are available by issuing 'amixer controls'
ACTL=/usr/sbin/alsactl
AMIX=/usr/bin/amixer
HWDEV=0
#load some defaults
#$ACTL -f /etc/asound.state restore
# Set the default recording channel
$AMIX -c $HWDEV sset 'PCM Capture Source' 'Mixer'
# Set the input level for PCM to 80%:
$AMIX -c $HWDEV set PCM 80%
# Set the input level for LINE to 0%:
$AMIX -c $HWDEV set Line 0%
# Set the playback level for LINE to 55%:
$AMIX -c $HWDEV set Line 55%
# Unmute the Line playback
$AMIX -c $HWDEV set Line unmute
# set all playback levels to 0% except the Front-Left and Front-Right channels (10%)
$AMIX cset numid=7 38,38,0,0,0,0,0,0
# force loading of these settings as otherwise it takes about 3 minutes..
sleep 5
/usr/bin/alsamixer > /dev/null 2>&1 &
sleep 5
/usr/bin/killall alsamixer > /dev/null 2>&1
</pre>
Please note that the volume levels when not listed in per cent they are not 0 - 100 or 0 - 255. Check the 'amixer controls' output for this.
3380c499d7d0440158cdd23f8976460680df96d5
Rpi-aprs-aprx.conf
0
428
1705
2014-11-08T11:00:17Z
Admin
1
Created page with "<pre> /etc/aprx.conf </pre> Aprx is a Linux based APRS client with full digipeater capabilities. The config below is for a Receive-(to APRSIS)-only iGate can can be tweaked ..."
wikitext
text/x-wiki
<pre>
/etc/aprx.conf
</pre>
Aprx is a Linux based APRS client with full digipeater capabilities.
The config below is for a Receive-(to APRSIS)-only iGate can can be tweaked for full digipeater capabilities. Read the extensive manual for aprx for full details.
<pre>
# -- global variables --
mycall VK2HAQ-1
myloc lat 3256.14S lon 15137.75E
# -- APRS Internet System --
# use appropriate passcode for your station
<aprsis>
passcode -1
server aunz.aprs2.net
</aprsis>
# -- program and packets logging --
<logging>
pidfile /var/run/aprx.pid
rflog /dev/shm/aprx-rf.log
aprxlog /dev/shm/aprx.log
dprslog /var/log/aprx/dprs.log
</logging>
# -- interfaces --
<interface>
ax25-device $mycall
tx-ok false # transmitter enable defaults to false
</interface>
# -- beacon --
<beacon>
beaconmode aprsis
cycle-size 20m
beacon symbol "R&" $myloc comment "Rx-only iGate"
</beacon>
</pre>
58833a3c425be9afed7aaef86689024a515fbb08
Rpi-aprs-soundmodem.conf
0
426
1706
1700
2014-11-08T11:01:54Z
Admin
1
wikitext
text/x-wiki
<pre>
/etc/ax25/soundmodem.conf
</pre>
Soundmodem is a technique to use an ordinary sound card as an analogue-to-digital converter like a TNC does.
<pre>
<?xml version="1.0"?>
<modem>
<configuration name="AX25">
<chaccess txdelay="1000" slottime="100" ppersist="40" fulldup="0" txtail="100"/>
<audio type="alsa" device="plughw:0,0" halfdup="1" capturechannelmode="Mono"/>
<ptt file="none" gpio="0" hamlib_model="" hamlib_params=""/>
<channel name="sm0">
<mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1" inlv="8" fec="1" tunelen="32" synclen="32"/>
<demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1" inlv="8" fec="3" mintune="16" minsync="16"/>
<pkt mode="MKISS" ifname="sm0" hwaddr="VK2HAQ-1" ip="44.128.0.2" netmask="255.255.255.0" broadcast="44.128.0.255" file="/dev/soundmodem0" unlink="1"/>
</channel>
</configuration>
</modem>
</pre>
Noteworthy in this file are the following parameters:
* txdelay -- set this to be long enough for the radio to open on transmit (default is 250ms)
* plughw:0,0 -- points to the first sound card (1,0 would point to the second), make sure the order is configured properly (see here (page missing))
* ifname -- this needs to match the network interface and is also referenced in [[Rpi-aprs-axports]]
* hwaddr -- set to the callsign (including the SSID) as seen in [[Rpi-aprs-axports]] and [[Rpi-aprs-aprx.conf]]
* ip, broadcast -- use same network settings when starting [[Rpi-aprs-soundmodem]]
* file -- points to the /dev/soundmodem character device, even though the system will not show it in /dev (do not use the sm0 interface)
308ddae82f25fd2f5ef937948bc1f58075f32a99
Rpi-aprs-soundmodem
0
429
1708
1707
2014-11-08T11:08:56Z
Admin
1
wikitext
text/x-wiki
The following script can be used to start the soundmodem service.
Please note that the network settings and interface name must match those in [[Rpi-aprs-soundmodem.conf]] and [[Rpi-aprs-axports]]
<pre>
#!/bin/sh
# required for using a USB Sound Card as a TNC
/usr/bin/screen -S sm0 -m -d /usr/local/sbin/soundmodem
sleep 2
route add -net 44.0.0.0 netmask 255.0.0.0 dev sm0
</pre>
This command will run the soundmodem service in a detached 'screen' session for easy backgrounding. To open access to the screen session issue the command 'screen -r' (or screen -ls to find out what the name of the screen session is).
It is not a requirement to run soundmodem in a screen so you can just as easily background it with an empersand.
4a215c274087233bd9416ad52528a3a175f1c6f3
File:Rpi-shutdown-monitor.zip
6
430
1715
2014-11-09T09:56:18Z
Admin
1
python script, schematic and images
wikitext
text/x-wiki
python script, schematic and images
fe57e19673b451eb2c2e611e6e53a8ca26ef5d34
File:1wire-linear-topology.png
6
431
1720
2014-11-15T10:43:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0055-rs232-tempsensor
0
16
1723
1722
2014-11-15T10:49:39Z
Admin
1
wikitext
text/x-wiki
----
{{Infobox
| name = 0055-rs232-tempsensor
| image = [[File:IMG 20140426 084813.jpg|150px]]
| imagecaption = Serial Tempsensor Board
| author = Marcel Post
| mcu = AVR ATtiny85
| initial_release_date = June 2011
| last_modified_date = April 2014
| pcb_layers = 1
| project_status = completed
| category = [[Electronics]]
}}
DS1820 tempsensor via serial (or USB)
<br> <br>
==Description==
This project is an updated version of one of my earlier PIC-based serial port temperature sensor. The original PIC version only supported one sensor per data pin whereas this version uses the OneWire bus protocol to discover and read data from multiple sensors on a single bus line.
Since more and more computers don't have a serial port anymore I designed an add-on board to fit a cheap and simple 9600bps USB-to-UART Bridge (based on the CP2102 chip). I found some complete boards on Ebay for just AUD $2.95. Best of all, under Linux they don't require any additional drivers. For Windows drivers are required though (see links section below).
Once the code has been uploaded into the ATtiny85 it's simply a matter of attaching it to the serial port. Set up comms on the PC as 9600-8N1 (all flow control set to OFF). When a key is pressed the sensorboard will start querying all the sensors it finds on the OneWire bus and send out the acquired temperature back over serial.
==Timeline==
* 2014-04-25 Added support for DS18B20 sensors as the older DS1820 and DS18S20 are end of life.
* 2011-11-27 Ordered 3x PCB's with BatchPCB. Only after the boards have arrived, built up and tested I will post relevant firmware on this page. Until then!
* November 2011 Finalised schematic and pcb design. Removed the on-board DS1820 as it was heating up too much from the ftdi chip to give accurate readings and added pads for a second pull-up resistor to cater for more devices on the line.
* September 2011 Designing a circuit board for external production. Once the boards are complete you should see them appear on this page.
* June 2011 created a first prototype version. Hooked up 4 sensors tought me that the 5k pull-up resisistor for the DS18S20 is not always enough. Perhaps because I used a long (about 6m flat-ribbon) cable to connect the sensors. I added another 5k pull-up resistor and put it parallel across the existing resistor and therefore halving the resistance to 2.5k. That made it behave as expected again.
==Schematic==
The next step will be to design (have manufactured) a custom circuit board for this project. I have a few other projects that I would like to make PCB's for so I will continue with some other projects until I have several boards I can have manufactured all in one go.
[[File:0055-sch-v1.0.JPG|thumb|none]]
Download schematic as pdf: [[File:0055-sch-v1.0.pdf]]
The current schematic
===Attaching multiple sensors===
Maxim has released Application Note 148, a tutorial which mentions several techniques for attaching multple sensors to a microcontroller. The easiest and most reliable method is a linear topology where all sensors are fed from the same line.
[[File:1wire-linear-topology.png|300px|thumb|none]]
More information here:
Guidelines for Reliable Long Line 1-Wire Networks
http://www.maximintegrated.com/en/app-notes/index.mvp/id/148
===The Pull-Up resistor===
The DS1820 (DS18B20, DS18S20, DS1820) datasheet states a maximum current drain through parasitic power of 4mW. At 5V supply that means a pull-up resistor of 1.2k is as low as you can go. For short runs you should be fine with a 4.7k pull-up resistor.
==Circuit Board==
[[File:0055-pcb-3d-v1.0.JPG|none]]
The PCB layout
[[File:0055-pcb-v1.0.JPG]]
Gerbers: [[File:0055-gerbers-v1.0.zip]]
Other boards I'm currently designing: [[Pending_PCB_manufacturing]]
==Software==
Latest source code: [[File:0055-rs232-tempsensor v2.zip]]
Version 1: [[Image:0055-rs232-tempsensor.zip]]
[[Image:Mcu 0055 Rs232-tempsensor 2011-08-02.tar.gz]]
* client-side polling software
All this does is send out a CRLF over the serial port and then listens for any incoming replies on same serial port.
For Windows: [[File:Gettemp vb-express-2005 V8.zip]] (grab the exe from the bin/Release/ folder)
For Linux: [[File:Gettemps linux.tar.gz]]
==Release Notes==
==Gallery==
This is a screenshot of the temperature graphs of some sensors around my house. They are all connected to a single board with about 15m of cable connecting them.
[[File:Temps-week.png|none]]
Here are some pictures of the prototype made on vero-board. A customised board will be designed at some stage. I will announce it here when that's ready.
[[Image:0055-ser-temps-board top.JPG|none]]
This is the top of the board. I'm using the Atmel ATtiny85 microcontroller for this. Adding a second resistor was a quick hack to lower the total resistance as I didn't get proper readings over 8m of flat ribbon cable with three sensors attached. The 6-pin female header strip fits directly over the serial-to-usb board. I also fitted one DS18S20 temperature sensor on-board but I noticed that the serial-to-usb chip is getting a little warm and it affects reading the correct ambient temperature. On the customised pcb I will remove this and only have the edge connector available for connecting temperature sensors.
[[Image:0055-ser-temps-board bot.JPG|none]]
This is the copper side of the board. As you can see there's very little to it. NOTE: This board has a USB connector on it. That was the original idea, but since the adding of the USB code was probably going to be too big to fit all in the memory of the t85 I decided to use an external USB-to-Serial converter board.
[[Image:0055-ser-temps-board side.JPG|none]]
Side view of just the add-on board.
[[File:IMG 20140426 084813.jpg|none]]
Custom PCB final layout.
The serial-to-usb board was picked up cheaply from eBay. Here is a top-view of the board and it's main features.
[[Image:CP2102.jpg|none]]
This board just plugs in to a standard USB port and presents itself as a virtual COM-port. It has a fixed transmission speed of 9600bps which is more than adequate for our purposes with this project.
[[Image:0055-ser-temps-board usb.JPG|none]]
My add-on board upside-down on the serial-to-usb board. The thin strip of black insulation tape was put on to block the light of two bright LED's.
==External Links==
http://www.atmel.com/avr/
Silicon Labs page on the CP2102 http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
Drivers: (locally hosted) [[Image:CP210x VCP Win XP S2K3 Vista 7.zip]]
[[File:DS18S20.pdf]]
a9c2c30782dcb8434c44e889737ed6db00112e8a
Arduino
0
298
1724
1586
2014-11-19T03:59:13Z
Admin
1
wikitext
text/x-wiki
Arduino code examples (The Arduino UNO and Duemilanove both use an Atmel AVR microcontroller).
* [[PCA9535 IO expansion port]]
* [[AD9850 wave generator]]
* [[Midas-2x16-I2C-LCD]]
92c49d4dcba5034f912c29703ddd1ff973b65e24
File:Midas I2C LCD.zip
6
433
1726
2014-11-19T04:01:10Z
Admin
1
arduino demo code with lcd library
wikitext
text/x-wiki
arduino demo code with lcd library
0960b775eec2e53012dfdc4a3ce81872bfc68a5c
File:Midas-I2C LCD.jpg
6
434
1728
2014-11-19T04:04:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MC21605GL6W-SPTLYI.png
6
435
1729
2014-11-19T04:06:06Z
Admin
1
Product information as shown on the Farnell website (Nov 2014)
wikitext
text/x-wiki
Product information as shown on the Farnell website (Nov 2014)
36f2c40110b425b7c029f85f15a6941ea088482e
Midas-2x16-I2C-LCD
0
432
1730
1727
2014-11-19T04:06:38Z
Admin
1
wikitext
text/x-wiki
MC21605GL6W-SPTLYI
[[File:Midas-I2C LCD.jpg]]
The LCD module receiving data over the I2C bus only.
[[File:MC21605GL6W-SPTLYI.png]]
Product information as shown on the Farnell website (Nov 2014)
Arduino demo program including the ST7036 LCD library.
[[File:Midas I2C LCD.zip]]
7402e48da4dfaa05971aee2168a29262d3e11d01
File:Tnc-pi detail.jpg
6
436
1731
2014-11-25T22:38:41Z
Admin
1
TNC-Pi trimpots for output volume and TXDelay
wikitext
text/x-wiki
TNC-Pi trimpots for output volume and TXDelay
ea5b4fe17ba7b301bfa1ba6e4e7c1e77a2930037
Rpi-aprs-what-do-i-need
0
437
1733
2014-12-07T02:44:22Z
Admin
1
Created page with " For a simple RPi-powered APRS station (not mentioning the radio) you would need: - Raspberry Pi - SDcard (4GB or more) - 5V Power supply to the raspberry pi (micro-usb conne..."
wikitext
text/x-wiki
For a simple RPi-powered APRS station (not mentioning the radio) you would need:
- Raspberry Pi
- SDcard (4GB or more)
- 5V Power supply to the raspberry pi (micro-usb connector)
- Network connection (for iGating and/or getting accurate Internet time)
Now, here are some of the options available:
Raspberry Pi model choice:
-------------------------------------
The Models A and A+ do not have an on-board Ethernet adapter. They can be used as stand-alone units just fine but the main issue is getting the time correct. One method is to use a WiFi adapter. These are fairly cheap but rely on a nearby WiFi network. It that network becomes unavailable the rpi will slowly drift in time. Once the network is present again it will just auto-sync with the Network Time Protocol (NTP) on the Internet. If the WiFi network is unavailable at start-up of the RPi it will default to 1 January 1970.
One other option for timekeeping is to make use of an add-on module attached to the GPIO header pins on the RPi. At this stage I can think of two possible modules that could give the RPi accurate time: 1) a battery backed-up Real-time Clock (RTC) or 2) a GPS module. The RTC would need to be set either by an initial clock synced from the Internet over NTP or set manually from the command prompt in linux (may write a web-gui page for that at some stage). The benefit of the RTC is that it keeps the time even if the RPi is switched off. So you could bring the RPi to an location where there is no GPS signal and still have near-accurate time. Most RTC's are fairly accurate but they do drift. Once a week (or month) syncing over NTP would be nice.
The second option, a GPS module would give you the most accurate time when a signal is available. It's like an Internet NTP connection. If none is available at startup, the RPi would live in 1970.
From a power point of view I would think that the RTC would be more efficient than a GPS module but they're all down to only a few mA's.
Testing and setup:
-------------------------
Of course you may wish to see what the RPi is showing on screen and especially for debugging network connectivity it is easiest if you have an external monitor and keyboard available:
- LCD monitor with DVI connector and cable.
(or you could find one of those VGA to DVI adapters I got and use an old VGA monitor)
- USB keyboard
- USB mouse
Even though none of these are required for normal operation of the APRS station they could make life a little easier.
5V power suppy to raspberry pi (micro usb):
----------------------------------------------------------
The RPi draws up to 700mA. Add to that any additional peripherals (WiFi adapter, Keyboard, Mouse, TNC-Pi, Realtime Clock) and you may run quickly over the maximum of 1A per usb port. In those cases it is recommended to use a Powered USB Hub. Several of these will allow 'backfeeding' to the RPi. Meaning, that you don't need a micro-usb connection to the RPi but the powered usb hub will just put the juice back in the RPi over the USB port it is connected to. Although this saves cables and power supplies it comes at a cost. The designers of the RPi have put quite a bit of effort in protecting the power input of the RPi and backfeeding it though USB will negate all of that. You are reliant on the powered usb hub's power supply and can only hope that it's equally well protected.
SDCARD:
-------------
The older RPi models A and B have a full size SDCARD slot, the newer A+ and B+ models have a micro-SD slot. Don't use those SD-to-micro-SD adapter cards, just get the right size for your board.
When it comes to the operating system (Raspbian) I will be more than happy to flash the image onto it as my version will have the web-gui, the statistics and the maintenance scripts installed. For the die-hards I am happy to make the sources and scripts available, but I haven't written an installation guide for it.
TNC
-------
One thing I haven't mentioned yet is the TNC.
At home I am running the software using a USB Soundcard as a TNC. This seems to work very well but I haven't finished testing yet. The sound card was purchased of eBay and was only $10 or so. I prefer this method as it does not involve any propietary 3rd party hardware. If you simply wish to be on-air before I have finished testing then the TNC-Pi from Coastal Chipworks is what Warren and Russell are using. These are the units that we have come to known over the last couple of months.
The TNC-Pi uses a DB9 connector for which you will have to make up an interfacing cable. It's pretty simple with RX_Audio, TX_Audio, PTT and GND. Output levels from the TNC-Pi can be adjusted with a simple trimpot and the incoming signal may need to be adjusted on the radio side.
RADIO
---------
The UV-5R is not a 12V or a 5V device. It has VOX which is probably what you want to use but you may need to come up with a clean way of continuously powering it. I believe there are 'battery eliminator' packs available which just plug in the back like a battery but will accept power from 12V. This may be the easiest method of running at 12V.
Apart from a decent antenna, that's pretty much it.
1f9e1a1d98cca80663e64f21445557a7fcff4b07
File:Pi-Model-A 2012.jpg
6
439
1736
2014-12-21T01:52:54Z
Admin
1
Raspberry Pi Model A (2012)
wikitext
text/x-wiki
Raspberry Pi Model A (2012)
5879838eff08c1b1aa1824c6d86a0d4d305e7011
File:Pi-Model-B 2012.jpg
6
440
1738
2014-12-21T01:54:33Z
Admin
1
Raspberry Pi Model B (2012)
wikitext
text/x-wiki
Raspberry Pi Model B (2012)
eb60dce80ff3b52b192ff2739f9ca85cb011a8a5
File:Pi-Model-A+ 2014.jpg
6
441
1748
2014-12-21T02:21:59Z
Admin
1
Raspberry Pi Model A+ v1.1
wikitext
text/x-wiki
Raspberry Pi Model A+ v1.1
be25bfa8809379e76b634b5d393b4c86c4688dcb
File:Pi-Model-B+ 2014.jpg
6
442
1751
2014-12-21T02:27:48Z
Admin
1
Raspberry Pi Model B+ v1.2
wikitext
text/x-wiki
Raspberry Pi Model B+ v1.2
154cee9d1f52f81eec1d0204a5636d7e1f2a959b
File:Pi-Model-B 2011 rev1.jpg
6
443
1752
2014-12-21T02:34:28Z
Admin
1
Raspberry Pi Model B Rev1
wikitext
text/x-wiki
Raspberry Pi Model B Rev1
743af05eeef8dce29a3d93ab4acbca0b7479a883
Raspberrypi-models-and-versions
0
438
1759
1758
2014-12-21T02:54:29Z
Admin
1
wikitext
text/x-wiki
Here's an overview of the various Raspberry Pi models and versions (aka revisions).
In February 2012 the Raspberry Pi Foundation released Model A and Model B
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Model A</b>
|style="background-color:#f2f2f2;"|<b>Revision</b>
|style="background-color:#f2f2f2;"|<b>Release date</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|style="background-color:#f2f2f2;"|
|style="background-color:#f2f2f2;"|<b>Model B</b>
|style="background-color:#f2f2f2;"|<b>Revision</b>
|style="background-color:#f2f2f2;"|<b>Release date</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|-
|
|
|
|
|
|[[File:Pi-Model-B 2011 rev1.jpg|200px|thumb|none|Raspberry Pi Model B rev1]]
|Rev1
|Feb 2012
|With Ethernet
512MB RAM
2x USB
No Mounting holes
|-
|[[File:Pi-Model-A 2012.jpg|200px|thumb|none|Raspberry Pi Model A]]
|Rev1
|Feb 2012
|Based on Model B Rev2
P5 Header
|
|[[File:Pi-Model-B 2012.jpg|200px|thumb|none|Raspberry Pi Model B]]
|Rev2
|Feb 2013
|P5 Header
|-
|[[File:Pi-Model-A+ 2014.jpg|200px|thumb|none|Raspberry Pi Model A+ v1.1]]
|Rev1.1
|Nov 2014
|40 Pin GPIO
Composite video now in audio jack
|
|[[File:Pi-Model-B+ 2014.jpg|200px|thumb|none|Raspberry Pi Model B+ v1.2]]
|Rev1.2
|Jul 2014
|40 Pin GPIO
Composite video now in audio jack
4x USB
|}
4cda34db58e3cdac8fa60591d6ed38504dc0ce9d
File:UV5R-PTT-pinout.jpg
6
445
1770
2015-01-01T23:39:02Z
Admin
1
RPi GPIO PTT, logic inverter and connector pinout for Baofeng UV-5R
wikitext
text/x-wiki
RPi GPIO PTT, logic inverter and connector pinout for Baofeng UV-5R
257f2c2c472e7b6c65e17c4b4e4b3ee39da935be
File:P2AT-PTT-pinout.jpg
6
446
1772
2015-01-01T23:44:02Z
Admin
1
RPi GPIO PTT, logic inverter and connector pinout for Icom IC-P2AT
wikitext
text/x-wiki
RPi GPIO PTT, logic inverter and connector pinout for Icom IC-P2AT
ef38f2ca92c1d24b44ba58d3e2f08c0643a6c071
File:IC-207H.jpg
6
447
1779
2015-01-04T02:05:34Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IC-207H rear.jpg
6
449
1781
2015-01-04T02:09:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-211A output-volume.jpg
6
450
1785
2015-01-04T02:40:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-211A.jpg
6
452
1787
2015-01-04T02:47:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-211A back.jpg
6
453
1791
2015-01-04T02:53:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-211A-mic-connector-pinout.jpg
6
454
1793
2015-01-04T03:07:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-211A TNC-Pi comms-cable.jpg
6
455
1799
2015-01-04T05:25:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Kenwood TM-211A
0
451
1800
1796
2015-01-04T05:27:11Z
Admin
1
wikitext
text/x-wiki
Kenwood TM-211A
[[File:TM-211A.jpg|thumb|none|200px|Kenwood TM-211A]]
[[File:TM-211A back.jpg]]
APRS / TNC connection notes:
* radio has no dedicated port for digital modes
* 3.5mm plug (mono) for Audio-Out at the back (see output volume picture)
Output volume (peak-to-peak) measured on audio output socket using locally heard APRS stations as source.
[[File:TM-211A output-volume.jpg|thumb|none|400px]]
Pinout of the rear microphone connector.
[[File:TM-211A-mic-connector-pinout.jpg|thumb|none|400px]]
[[File:TM-211A TNC-Pi comms-cable.jpg|thumb|none|400px|TNC-Pi interface cable]]
f4df971ba06d03523e17fd73657efe7292ca9f79
File:TNC-Pi.jpg
6
457
1803
2015-01-04T05:33:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TNC-Pi R7.jpg
6
458
1805
2015-01-04T05:41:05Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TNC-Pi R6.jpg
6
459
1807
2015-01-04T05:45:27Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Icom IC-207H
0
448
1810
1809
2015-01-04T07:16:12Z
Admin
1
wikitext
text/x-wiki
Icom IC-207H
[[File:IC-207H.jpg]]
[[File:IC-207H rear.jpg]]
APRS / TNC connection Notes:
* Digital port at the back of the radio allows for fixed-output-volume (measured at 270mV Peak-to-Peak)
* Digital port is 6-pin mini-Din connector
* maximum input volume 400mV Peak-to-Peak
* microphone must be disconnected from front as it interferes with TX-Audio from digital port
* Transmit and Receive circuits do not provide Pre- and De-emphasis
==data port==
The radio's data port caters for 1200 baud and 9600 baud connections.
The maximum Audio Input level according to the user manual is 400mV Peak-to-Peak
The radio's constant receive audio output level (independent of front audio volume knob) is 270mV Peak-to-Peak
== TNC interface cable ==
To use this radio as an APRS station the following cable was custom-made to interface to the TNC-Pi
[[File:TNC-Pi comms-cable.jpg|thumb|none|400px|TNC interface Cable made for the IC-207H]]
05785149599fd1368155740663c76d96ba245a30
File:TNC-Pi radio header.png
6
460
1813
2015-01-04T07:39:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:RPi-PCB top.jpg
6
461
1816
2015-01-04T09:10:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:RPi-PCB bottom.jpg
6
462
1817
2015-01-04T09:11:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MX614P.jpg
6
464
1819
2015-01-04T09:14:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Wayne-Kerr Automatic-Modulation-Meter AMM-257.JPG
6
465
1823
2015-01-04T09:41:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Aprs-on-rpi
0
392
1825
1824
2015-01-04T09:43:30Z
Admin
1
wikitext
text/x-wiki
This is the web log for the APRS on Raspberry Pi project.
All this came about when some club members asked me if they could replace their Windows XP box running UI-View32 with a Raspberry Pi computer.
[[File:Rpi.jpg|200px|thumb|none|Raspberry Pi Single-Board computer, Model B]]
Project timeline:
31 October 2013
This is pretty much when things started. Initially I made an inventory of the various bits of APRS software available on the RPi and it all looked promising. I used a Raspbian image as the basis and added some tools like remote access software to the X-Server (using X11VNC).
4 November 2013
The software on the RPi will either be Xastir or aprx. Exchanged some information about which radios to use and pinout diagram for the Kenwood D710 back connector. Managed to configure the soundmodem software to talk to the sound card. But there is a problem. Although it produces what sounds like APRS packets it is very noisy, the signals are not clean and will most likely be corrupted.
[[File:Cmedia-CM106-USB-soundcard.jpg|200px|thumb|none|CMedia CM106 USB Sound Card]]
The USB Sound Card I am intending to use is the CMedia CM106. It is an external USB device and retails for about $10 on eBay. This card works reasonably well for an SDR (software defined radio) project I played around with some months earlier.
6 November 2013
Reading up on pre-emphasis and de-emphasis and how it affects the probability of successfully decoding packets at the other end. Best write-up is here: http://www.febo.com/packet/layer-one/transmit.html
To satisfy my curiosity, I managed to get an SDR dongle to work under Windows 7 using SDRSharp to produce the audio heard on 145.175 (the Australian National APRS frequency) and feed it using a 'virtual audio cable' to AFSK1200 (QTMM program). I could see several successfully decoded packets flying by!
12 November 2013
After many hours of configuration changes I am still not able to produce clean-sounding APRS packets. I tried several USB modems and they all produce packets with enormous distortion. I compiled the software from source and tried different sampling rates. All to no avail. The output volume is way too loud and distorted and I can't seem to control its behaviour. Thinking of leaving the soundmodem route for now and focus on RS-232 enabled TNC devices.
18 November 2013
Found some reasonably priced TNC's that have built-in RS-232 ports (some using FTDI TTL-to-UART). The Argent Data OpenTracker-USB and the TNC-Pi (a board, custom made to be placed on top of a Raspberry Pi).
[[File:Tnc-pi.jpg|200px|thumb|none|TNC-Pi board]]
[[File:Otusb.jpg|200px|thumb|none|OpenTracker USB TNC]]
21 November 2013
Ordered myself the Argent Data OpenTracker-USB TNC. At $45 I don't mind the expense as it will probably enable me to get the aprs working quickly and can then focus on getting the software side of things in order.
20 December 2013
With the newly received OpenTracker-USB TNC I was able to make up a simple interface cable and configure aprx on the RPi. Success! It was decoding APRS packets from the radio in a short matter of time. The receiving side can be considered solved using this technique.
The OpenTracker-USB can also be used for generating packets to be sent to the radio.
For my setup this requires an additional circuit since my handheld radio uses a combined line for Microphone signals and PTT and the radio does not feature a VOX (voice operated switch). Most newer handhelds will just have a VOX, which will key the radio into transmit when it hears a packet from the TNC to be transmitted. Most base station radios however will just have separate PTT and Audio-In lines making it fairly easy to use the OpenTracker-USB for transmit. With the success of Receive-only APRS decoding under our belt and the summer holidays upon us it is time to reconvene in the new year..
Edit: The opentracker USB has circuitry on-board that allows for easy interfacing to Handheld Radios that use the shared PTT/MIC/Bias-Voltage technique. In the end I stopped using the Opentracker and moved back to the successfully working USB Sound Card technique and using a [[GPIO pin on the RPi to trigger PTT]].
22 March 2014
Keeping the project alive by refining the RPi software a bit and working on a web-interface to the various controls of the software.
13 July 2014
I've been distracted by other projects that are somewhat related but aren't finished. The idea was to run my aprs-rpi igate experiment off batteries in the shed but I noticed that I didn't have full control over when the battery would need recharging. To that effect I started designing a voltage-datalogger and got stuck in pcb design, FET selection and working with circuit simulation software LTspice. Then I got distracted again by updating my satellite tracking software for Android and now I'm looking at putting together a skew-planar circular polarised antenna for working the satellites. Trying to source sturdy metal wire for the elements is in full swing.
I also finished the transfer of my home server from a (small) SheevaPlug to the (even smaller) raspberry pi. Now that that is running nicely and the financial year has been dealt with I got going again with the aprs-rpi project. A second rpi (the model A version without ethernet and only 256MB memory) is now talking fine to the OpenTracker-USB TNC and I'm now at a stage where the little web-interface I wrote is able to start/stop the services, update configuration and show some logs.
16 July 2014
Aprx version 2.08 (latest version) installed on the APRS-RPi base image. Demonstrated the receive-only capabilities to fellow club members and the web interface (although primitive) is working well.
18 July 2014
Wrote a web page that shows the 'dmesg' log to reveal what the kernel says about inserted devices such as an RS-232 TTL-UART adapter that is used as the serial port for the OpenTracker-USB. Having this information on a webpage makes configuration much easier and doesn't require the end user to know much about Linux internals.
29 July 2014
In another session at the radio club to configure and demonstrate APRS on the RPi I somehow damaged my OpenTracker-USB. It is running very hot when powered on and no lights are blinking. This is unexpected and throws a spanner in the works.. I contacted the manufacturer Argent Data in the USA and the owner agreed to have a look at repairing it. I sent it by air mail a few days later.
31 July 2014
Without my OpenTracker TNC I got back to getting the soundmodem method to work. Lo and behold, after a few more tweaks I was finally able to get a generic USB sound card to work as a modem. Combined with a program called 'Direwolf' i can now reliably decode (and probably send, but I haven't connected PTT nor audio-out to my handheld transceiver) aprs packets. The Direwolf software looks very similar to aprx and also works off a single config file.
I was also able to get the SDR dongle to work on Linux. Using the Direwolf application I could decodes APRS packets. It did lock up a few times though. Not sure what causes it. Even though it can be made to work I will not spend too much time and effort to this method as the SDR dongle is not able to transmit signals. Perhaps ideal for an iGate but not for setting up a full rx/tx digipeater.
Got some feedback from the fellow hams who are interested in this project that they are happy to purchase the TNC-Pi board. This would be another easy route to take as it just connects to the Raspberry Pi GPIO header pins and it has almost everything on there to set up a digipeater with few extra components.
3 August 2014
Almost finished working on putting the RPi, the radio and everything required to run an aprs system inside a metal toolbox. This way it is all neatly contained in a single unit and easy to transport. Also started re-designing the web interface to make it look a bit more coherent.
[[File:ACP-webgui.png|200px|thumb|none|APRS Control Panel, version 2]]
3 September 2014
For my 'APRS toolbox' setup I will be using the soundmodem (with USB sound card) setup. Since the radio I wish to use is a 2m handheld (IC-P2AT) and it doesn't have separate PTT and Audio-in lines it needs an additional circuit to use the audio coming out of the sound card to both key the radio into transmit and add the audio signal on top of this line. This technice is often used in handheld radios. I have started gathering some simple VOX (voice operated switch) schematics and attempted to combine them to the Audio-in line.
15 September 2014
My repaired OpenTracker USB arrived in the mail today. It looks like the 4-sided (quad flat package) microcontroller chip has been replaced. I might end up using this tracker in my car or for other purposes as I am fairly confident the soundmodem technique will be a winner.
23 September 2014
The TNC-Pi has arrived at one of the club's members and it is visible from the RPi. We ran out of time today to fully configure it all up but it looks like a neat solution and seems to have all the smarts on-board. There were some errors when accessing the TNC-Pi board from the RPi, but this may be just a simple configuration error. While we were there my receive-only APRS Toolbox was successfully decoding packets all throughout the evening. We also concluded that the 'missing link' is an interface cable that goes between the radio (6-pin mini-din female at the back of an Icom IC-207H) and the TNC-Pi (RS-232 female connector).
[[File:IC-207H front.jpg|200px|thumb|none|Icom IC-207H]]
The radio that will be used to set up a dedicated digipeater using the TNC-Pi board on a Raspberry pi.
24 September 2014
Added a webpage with details on how to set up a simple reboot/shutdown button for the Raspberry Pi. Full details, schematics and code here: http://www.marcelpost.com/wiki/index.php/Rpi-shutdown-button
30 September 2014
Gathered at the radio club again and made up the interface connecting cable for the TNC-Pi to the IC-207H radio.
[[File:IC-207H-to-TNC-Pi cable.jpg|200px|thumb|none|Interface cable for IC-207H]]
[[File:TNC-Pi comms-cable.jpg|200px|thumb|none|Radio and TNC cable pinout]]
After we fixed up the small configuration error in aprx.conf (it was using the serial port to talk to the TNC-Pi instead of the AX.25 port) the TNC-Pi was able to successfully receive and send packets. Success! All that needs to be done now is to calibrate the TNC's transmit level so that the radio's limiter doesn't kick in for the 2200Hz tones (1200Hz tones will be fine then too). I plan to use another handheld receiver (Baofeng UV-5R) with its audio going to a small digital oscilloscope (XMEGA Xprotolab from GaboTronics).
07 October 2014
Attempt to calibrate TNC-Pi for proper audio TX levels. Looks like the IC-207H (as well as Alinco DR-135, Kenwood TS2000 and D700) does not have a pre-emphasis network. The following website deals with setting the audio levels by using a low tone that is generated on the TNC-X (common ancestor of the TNC-Pi). http://fettechnologies.com/tncx.html
Made a high-pass filter using an opamp that can be used for the Pre-Emphasis. It seems to respond well but it hasn't been tested with live data yet. I also worked out a design for a low-pass filter which is for the De-Emphasis. More information on the designs and LTspice models here: [[Opamp-filters]].
04 November 2014
Tested out the new opamp HPF/LPF circuit. The IC-207H was able to send out APRS data which was successfully decoded on another station. Further testing needs to be done as the overall audio-out level seems fairly low (around 50% volume level) when compared with live traffic (around 70% volume level) from our local digipeater. The TXDELAY option in /etc/ax25/soundmodem.conf worked well to open the radio before sending data. Not sure yet of the influence of the trimpot onboard the TNC-Pi to also tune the TX Delay.
Some other information relates to the APRS digipeater settings themselves. It turns out that a fill-in Digi should have its PATH setting to WIDE1-1 and nothing more. This was confirmed by various documents including one from Bob Bruninga himeself. See my dedicated page on the APRS Path settings here: [[APRS-path]].
There was also the request to find out what SSID could be used for testing and troubleshooting. The list of possible SSID's recommends to use -6 as the SSID for 'special events' including tests.
Several web frontend improvements were also made but these haven't been rolled out yet to a production-image of the Raspbian SDcard. It is planned for our next get-together to roll out the latest version to our testing setup.
18 November 2014
Yesterday’s evening at the club was another one of those ‘two steps forward one step back’ events.
The test setup ran successfully with the new Raspbian version, also running the new Raspberry Pi firmware and the new APRS web gui. With some minor tweaks it all worked well. I’ve started giving version numbers to the gui to keep track of who’s running what. The version Warren is running is v0.02. This version fixes some bugs, adds some control to which services are running at system startup and brings you back to the configuration page after hitting ‘save’ when editing a configuration file. I’ve also identified some more areas where things can be improved.
With the oscilloscope we were able to measure the range of the output volume of the TNC-Pi board when transmitting a packet. Trimpot R7 (10k, near the DB9 connector sets the output volume from 0V (turned fully counter clockwise) to 700mV (turned fully clockwise). Halfway is around 325mV so the trimpot is Linear. Using the scope (and the tone generated when the TNC-Pi is in receive mode) we set the output volume of the TNC-Pi to 400mV PtP. The TNC-Pi has no pre-emphasis so the 1200/2200Hz tones will be at the same level.
[[File:Tnc-pi detail.jpg|200px|thumb|none|TNC-Pi trimpots]]
This means that the TNC-Pi should now be properly adjusted for the IC-207H and drives the TX audio signal (with or without the opamp filter pre-emphasis circuit) to the radio’s maximum allowable input level of 400mV PtP. We still need to confirm this with another radio to make sure it's not overdriving anything.
Next up we wanted to have a closer look at the TXdelay settings. The AX.25 suite of programs however has a program called kissparms. This should be the right tool to influence the AX.25 network interface parameters but trying out various settings did not reveal any audible change in behaviour. This calls for more investigation and it will be the main point on the agenda until this is understood and resolved.
25 November 2014
Another productive evening at the club last night. With only a few tweaks the latest web-gui version is now properly showing the RX and TX packet counters. We also found out that changing the SSID (the bit after the callsign) needs to be changed in both /etc/aprx.conf and /etc/ax25/axports. Once we did that all successfully received packets (as seen on the interface) were visible in the aprx-rf.log on the web gui front page.
We also experimented with the de-emphasis filter as earlier field tests never succeeded in receiving or decoding any packets. The same was confirmed at the club. With a little bypass cable the de-emphasis filter was taken out of the loop and received packets started rolling in. The conclusion can only be that the de-emphasis filter needs a little more work.. Right now the radio is not applying any de-emphasis but apparently the TNC-Pi is tolerant of these signals. By the end of the evening after running solidly for about 50 minutes we could see that over 90 packets were successfully received, the log was showing the contents of the decoded packets on the screen and the graphs showing the number packets per minute and Bytes per second were updating nicely. The next step here is to hook up the unit in the field and after it has confirmed proper working to configure it as a fill-in digi.
We also measured the output level on the data port of the IC-207H for received packets. We hooked it up to the cro and noticed that most received packets were around 270mV PtP. It is unclear yet whether this is the maximum range as we don't know the drive level of these packets but it gives us a ballpark figure to work with for redesigning the de-emphasis filter.
We had access to an FM Deviation Meter and testing with a handheld transmitting a DTMF signal it clearly showed the deviation.
[[File:Wayne-Kerr Automatic-Modulation-Meter AMM-257.JPG]]
After setting up the RPi and TNC-Pi we then tried to measure the deviation of the aprs packets. Well, wasn’t that interesting.. It turns out that the deviation meter needs some time to properly lock on to the signal before it can measure the deviation. The transmitted packets however were not long enough for the deviation meter to lock on! We tried to increase the length of the packets but could not find an easy way to do this. Apart from using a different technique altogether I can think of two other things we could still try. Firstly, the packet length could be made longer by increasing the ident text string (e.g. change ‘RX-Only iGate’ to ‘RX-Only iGate testing123 testing123 testing123, etc..’). Perhaps with a lot more characters the packet will scale up and be long enough for the deviation meter to properly lock on to the signal. Secondly, we could use the 487Hz tone that is generated on the TNC-Pi board as the reference point. This tone should have 775Hz deviation.
2 December 2014
We increased the contents of the text-field that is shown as a comment when a beacon packet is sent (e.g. ‘Rx-Only iGate’). We added about 100 extra characters and it made the duration of the packet transmission just long enough for the deviation meter to just get a lock on the signal. On receiving the signal the deviation meter would fully deflect the needle and then slowly come back to point to the real value on the scale. It took several attempts and after seeing several packets in a row bring the needle to around 3kHz we agreed that the deviation was within an acceptable range.
The next step was to configure aprx to be a Fill-in Digipeater listening with the WIDE1-1 alias. After a quick google search and hitting the aprx google groups site we tested a configuration that seemed to work pretty much at the first try. We watched the aprx-rf.log for any locally received packets from nearby digipeaters (VK2RTZ, VK2XPT, VK2RTM, VK2RPM, VK2RHR, VK2UNI) and confirmed that none we re-transmitted by our station. We then forced some beacons to be transmitted from a local car’s tracker and they all were heard directly and successfully retransmitted. We also had someone trigger a beacon from the other side of nearby Mount Sugarloaf and although we could hear their packet being re-transmitted from the WIDE2 digi VK2ATZ on Mt Sugarloaf it wasn’t heard directly by us and was therefore not re-transmitted by our station when we heard the WIDE2 repeats. For as far as our knowledge goes this seems to confirm that the Fill-in Digi is listening properly to locally heard direct packets and doesn’t re-transmit any packets from other Digi’s (either other Fill-ins or normal Wide Digi’s). One of the guys had to leave early and switched on the tracker in his car when he left. We could see several of his directs come through our station and they were re-transmitted. When he got further and further and out of range he was starting to be picked up by the WIDE2 digi VK2RTZ. There were a few more spots where we could hear him direct until he was over the hill and only heard by VK2RTZ. This real-world scenario where our station was able to ‘fill-in’ the holes demonstrated the value of a Fill-in Digi.
At the end of the evening one of they guys took the station back to his QTH and connected it all up running his first night as a Fill-in Digi on a Raspberry Pi. He has been running his fill-in digi ever since and it has clocked up thousands of packets and seems to be running perfectly.
This pretty much concludes the blog on this particular station's setup. It has been a great learning curve and the end result is a fully working Fill-in digi that is based on affordable hardware and runs at low power (about 6W when not transmitting).
For more practical information on setting up an APRS station on different hardware, please check the [[Aprs]] page on this site.
TODO (some day):
* Re-design the low-pass (de-emphasis) filter for radios that have 'flat' audio
* Run WA8LMF APRS test CD to confirm proper RX, see http://www.tapr.org/pipermail/aprssig/2005-April/005545.html
* Tune aprx Digipeater settings and filtering
* Further web frontend improvements
* Realtime Clock / NTP / GPS
077cf28096b9fe88b0d48df0d66b5c25ddedfc7e
File:Yaesu-FT-1802M.jpg
6
467
1828
2015-01-04T10:13:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Configuring APRS on Linux
0
391
1831
1830
2015-01-05T02:25:00Z
Admin
1
wikitext
text/x-wiki
Running APRS on Linux can be done in a few ways.
The short version can be found here: [[Rpi-aprs-what-do-i-need]]
If we assume a setup that can:
* receive packets that come in from over the the air
* receive packets that come in from over a network adapter (e.g. connected to the Internet)
* transmit packets over the air (i.e. to 'rf', radio frequency)
* transmit packets to a network adapter (e.g. to the Internet)
..then the following components are identified
==A device to receive the packets==
* a ham radio (e.g. base station or handheld transceiver)
* SDR (software defined radio)
* a Network Adapter (e.g. from the APRS-IS network on the Internet)
==A device to convert analogue (audible) signals to some form of digital signals==
(not required for packets originating from a network adapter)
* TNC (Terminal Node Controller)
* some fancier ham radios have a built in converter that just spits out RS-232
* a computer sound card (either in a laptop, or a dedicated PCI or USB device)
* SDR (software defined radio)
==Protocol Software that converts the digital signals to APRS packets==
* TNC (e.g. reads from an AX.25 interface or directly from a serial or USB port)
* soundmodem (converts soundcard signals to the AX.25 protocol)
==Application Software that processes the packets based on their information==
Most of these programs can be configured to listen to serial devices or network adapters, including the AX.25 interfaces.
* TNC (Terminal Node Controller)
* APRS client (aprx, xastir, direwolf, UI-View, etc..)
One of my first experiences with APRS was to configure a receive and transmit station (a digipeater) using:
* a basic USB sound card
* a 2-metre handheld transceiver (Icom IC-P2AT, maximum 5 Watts output power)
* a Raspberry Pi 'single-board-computer'
I have created a dedicated page for this project: [[aprs-on-rpi]]
Below is a collection of configuration files that have been known to work:
[[rpi-aprs-asound.conf]]
[[rpi-aprs-cmdline.txt]]
[[rpi-aprs-axports]]
[[rpi-aprs-soundmodem.conf]]
[[rpi-aprs-aprx.conf]]
[[rpi-aprs-CM106-sound-settings]]
1f24249b50c093340fa222c559717567274189ff
MIC-E
0
404
1834
1833
2015-01-05T02:59:34Z
Admin
1
wikitext
text/x-wiki
==MIC-E or (Mic-Encoder) DATA FORMAT==
The mic-encoder (as developed by TAPR) is a device that sends a 1/3second APRS data burst at the end of a voice transmission. It is like the "roger beep" when you release the PTT button. Mic-E was originally intended to encode your postition when you used the PTT on your hand mike, but the APRS world has changed quite a bit since then.
Mic-E is a method of encoding an APRS position report that was designed to make the packets very short so they could be reliably sent at the beginning or end of a voice transmission like MDC data in the commercial radio world. In Mic-E, the latitude along with some other data is encoded into the Destination Address field (7 bytes) of the AX.25 UI frame and the longitude along with some more data is encoded into the Information field (as short as 9 bytes) of the UI frame. This encoding uses all of the printable 7-bit ASCII characters instead of just 0-9, A-Z, and a-z. This made the packets much shorter than the "long-form" position reports using clear text that was common in APRS at the time.
The Mic-E specification includes a 3-bit message identifier that is encoded into the first three bits of the Destination Address field along with the latitude. The standard message identifiers are M0 (Off Duty) to M6 (Priority), C0 (Custom 0) to C6 (Custom 6), and Emergency. The intent was that a group might agree to the meaning of the six custom message types and use them as they saw fit.
For whatever reason, Kenwood chose to use Mic-E encoding when they developed their first APRS radio, the TH-D7 handheld. They have stuck with Mic-E in their subsequent APRS radios and Yaesu is using Mic-E in their APRS radios, too.
As indicated, not many people really pay attention to the Mic-E message types, though, obviously, someone does hence the question the OP received. If you had several people working an event and they all had APRS Mic-E encoders, then you could use Mic-E to convey quite a bit of information without spending a lot of air time to convey the same information using voice. In general practice, though, I'm not sure Mic-E messages are that important.
You can read about Mic-E encoding in Section 10 of the APRS v1.01 spec at: http://www.aprs.org/doc/APRS101.PDF Alternatively, a local copy is hosted on this site as well: [[File:APRS101.PDF]]
In Mic-E data format, the station’s position, course, speed and display
symbol, together with an APRS digipeater path and Mic-E Message Code,
are packed into the AX.25 Destination Address and Information fields.
The Information field can also optionally contain either Mic-E telemetry data
or Mic-E status. The Mic-E Status can contain the station’s Maidenhead
locator and altitude.
Mic-E packets can be very short. At the minimum, with no callsigns in the
Digipeater Addresses field and no optional telemetry data or Mic-E status
text, a complete Mic-E packet is just 25 bytes long (excluding FCS and
flags).
See also:
www.aprs.org/aprs12/mic-e-examples.txt
www.aprs.org/aprs12/mic-e-types.txt
67f06fe1bfb84a0891e24d9880897a66af530ac3
File:IC-P2AT.jpg
6
469
1837
2015-01-05T03:45:53Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Icom IC-P2AT
0
468
1839
1838
2015-01-05T03:48:41Z
Admin
1
wikitext
text/x-wiki
This handheld transceiver has served me well over the years. It doesn't have VOX (voice operated switch) CTCSS (tone squelch) but it works fine as an APRS Fill-in Digipeater.
[[File:IC-P2AT.jpg]]
APRS TNC interface cable.
I used the following method to connect this radio to a USB Sound card to do APRS.
[[File:P2AT-PTT-pinout.jpg|thumb|none|400px]]
4ee3a381a82f20a2761e8a2e6866ad6ad922b85c
File:UV-5R.jpg
6
470
1840
2015-01-05T03:52:27Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Baofeng UV-5R
0
471
1841
2015-01-05T03:55:38Z
Admin
1
Created page with "This is a low-cost but very versatile handheld transceiver. I have used the 2m/70cm feature many times to talk to satellite repeaters. [[File:UV-5R.jpg|thumb|none|400px]] ..."
wikitext
text/x-wiki
This is a low-cost but very versatile handheld transceiver. I have used the 2m/70cm feature many times to talk to satellite repeaters.
[[File:UV-5R.jpg|thumb|none|400px]]
Connection method to use this radio as an APRS Rx-only iGate (PTT is optional and can be used to key the radio when using Digipeating)
[[File:UV5R-PTT-pinout.jpg|thumb|none|400px]]
f4d4aaca0482f953c9460a765f768e61e6b16283
File:Aprs.gif
6
472
1843
2015-01-06T11:04:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TM-1802M TNC-cable.jpg
6
473
1849
2015-01-07T21:55:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:1802M-pinout.jpg
6
474
1852
2015-01-07T22:07:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Acp help-menu.jpg
6
476
1857
2015-01-11T08:18:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Acp system-menu.jpg
6
477
1860
2015-01-11T08:22:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Acp aprs-menu.jpg
6
478
1861
2015-01-11T08:23:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
ACP
0
475
1866
1865
2015-01-11T08:29:23Z
Admin
1
wikitext
text/x-wiki
===ACP -- the APRS Configuration Panel===
To make the installation and configuration of APRS on Linux accessible to the general public I designed a web interface specifically for this purpose.
The ACP (APRS Configuration Panel) is accessbile from any web browser, from your laptop, desktop computer, mobile device or through remote networking.
Below are screenshots of a recent version (v0.6) of the web interface.
[[File:Acp main-menu.jpg|thumb|none|300px|Main menu]]
[[File:Acp aprs-menu.jpg|thumb|none|300px|APRS menu]]
[[File:Acp system-menu.jpg|thumb|none|300px|System menu]]
[[File:Acp help-menu.jpg|thumb|none|300px|Help menu]]
900150d08900e93aa94fcda3422c9551cfa964af
File:TNC-Pi TM-1802M.jpg
6
480
1870
2015-01-14T00:28:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Yaesu FT-1802M
0
466
1874
1873
2015-01-14T00:33:45Z
Admin
1
wikitext
text/x-wiki
The Yaesu FT-1802M
[[File:Yaesu-FT-1802M.jpg]]
We used this radio to set up a Receive-only iGate running on a Raspberry Pi model B+ using the TNC-Pi and a Yaesu FT1802M radio.
Fortunately the radio was presented to me with a pre-made TNC cable. Even though this cable was made for the Argent Data OpenTracker with a GPS module, it turned out that the connections are exactly the same for interfacing to the TNC-Pi.
[[File:1802M-pinout.jpg|none|RJ-12 microphone socket pinout]]
[[File:TM-1802M TNC-cable.jpg|thumb|none|400px]]
You may notice the additional Anderson connector. This is not required for the TNC-Pi but for powering the OpenTracker/GPS modules as it was used in its original configuration.
The output volume on the SPK port at the back of the radio is not fixed and needs to be adjusted using the front volume knob.
[[File:TNC-Pi TM-1802M.jpg|thumb|none|400px|working iGate setup]]
a53a986c6d04abfb5a054cee4848db3c6af3d95a
APRS Hardware and electronics
0
412
1876
1769
2015-01-15T04:16:22Z
Admin
1
wikitext
text/x-wiki
==Single-board computers==
* Raspberry Pi
==Sound Cards==
* CMedia CM106 USB sound adapter
==Pre/De-emphasis filters==
* [[Opamp-filters]] homebrew filters to compensate for radios that do not support Pre/De-emphasis
==PTT on Raspberry Pi==
* [[GPIO_pin_on_the_RPi_to_trigger_PTT]]
==Realtime Clock (RTC) module==
* [[RTC_on_RPi]]
358f70d838023b259f8dd871dd56f8a90919cff5
File:Raspberry-pi-real-time-clock-rtc-ds3231-3.jpg
6
482
1878
2015-01-15T04:20:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DS3231 RTC.jpg
6
483
1882
2015-01-15T08:44:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Raspberry-pi-real-time-clock-rtc-ds3231-2.jpg
6
484
1885
2015-01-15T09:56:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
RTC on RPi
0
481
1886
1884
2015-01-15T09:56:38Z
Admin
1
wikitext
text/x-wiki
Adding a Realtime Clock to the Raspberry Pi is not super-simple but with the instructions on this page you should get an idea of how it all fits together.
(content not yet written..)
The DS3231 Realtime Clock modules have been chosen as the preferred platform for providing a Realtime Clock for the Raspberry Pi. These modules hold the time fairly well and with their 5-pin form factor they are one of the smallest RTC boards available for the RPi.
[[File:DS3231 RTC.jpg|thumb|none|400px|The DS3231 RTC module]]
This is what the end result should look like:
[[File:Raspberry-pi-real-time-clock-rtc-ds3231-2.jpg|thumb|none|400px|RTC module added on the GPIO Header]]
[[File:Raspberry-pi-real-time-clock-rtc-ds3231-3.jpg|thumb|none|400px|RTC module added on the GPIO Header]]
63617e6204044895cb2f1dac35ae591f7fd2dded
File:Old-inkjet-printers.jpg
6
485
1887
2015-01-18T23:37:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MV3025.jpg
6
487
1892
2015-01-19T00:20:11Z
Admin
1
Microcarve MV3
wikitext
text/x-wiki
Microcarve MV3
169609c7e96c6c7900eb097d514d9cf5ba578111
CNC-machine
0
486
1893
1891
2015-01-19T00:21:17Z
Admin
1
wikitext
text/x-wiki
This page is about the adventures of making a CNC machine from old inkjet printers, stepper motors and MDF. The aim is to have a machine that is precise enough to use for making printed circuit boards without using the liquid-etching techniques.
I loosely base my design on the MicroCarve series of CNC machines that have had good reports about precision, ease of assembly and low cost.
[[File:MV3025.jpg|thumb|none|150px|Inspiration: The Microcarve MV3]]
The process will roughly consist of the following steps:
* salvage the machined rods and print-head carriages from old printers (need at least 6 rods)
* cut the sides and cross bars from MDF sheet
* make a Y-axis table with a threaded rod and bolt
* attach the cross bars to the sides
* attach the Y-axis assembly to the cross bars
* make an X-axis table with a threaded rod and bolt
* attach the X-axis assembly to the sides
* make a Z-axis dremel tool-holder table with a threaded rod and bolt
* attach the Z-axis assembly to the X-axis table
* find/buy/salvage 3x stepper motors and connect to the threaded rods
* make/design/buy stepper motor driver boards
* interface 3D modelling software to the stepper motor driver boards
2015 - January
Finally our neighbourhood was up for bulk-waste collection again. This time around I made a more serious effort in picking up some discarded inkjet printers and there were plenty.
[[File:Old-inkjet-printers.jpg|thumb|none|300px|discarded inject printer ready for salvaging parts]]
The following printer models had some useful parts:
* Lexmark Z640 (1x 7mm rod with ink carriage)
* Canon MP370 (1x 8mm rod from the scanner, 1x 8mm rod from the printer)
fe282c89d101c812bf7936a429e7da1b17e94aa5
File:Acp main-menu.jpg
6
479
1894
1869
2015-01-27T01:13:13Z
Admin
1
Admin uploaded a new version of "[[File:Acp main-menu.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC3525 recommended placement.png
6
488
1895
2015-02-14T10:15:30Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:T84.jpg
6
489
1899
2015-02-14T10:26:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC3525.pdf
6
490
1901
2015-02-14T10:29:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-1.png
6
319
1910
1438
2015-02-14T11:06:20Z
Admin
1
Admin uploaded a new version of "[[File:0084-pfet-vdiv-1.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-2.png
6
491
1918
1914
2015-02-14T11:57:03Z
Admin
1
Admin uploaded a new version of "[[File:0084-pfet-vdiv-2.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-3.png
6
492
1926
1922
2015-02-14T23:50:32Z
Admin
1
Admin uploaded a new version of "[[File:0084-pfet-vdiv-3.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-4.png
6
493
1941
2015-02-15T01:28:32Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Charge-pump-based-negative-voltage-gen.png
6
494
1944
2015-02-15T02:03:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-5.png
6
495
1947
2015-02-15T02:16:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-pfet-vdiv-6.png
6
496
1949
2015-02-15T02:36:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Isl1218.jpg
6
497
1955
2015-02-15T02:56:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SD1602G2.jpg
6
498
1958
2015-02-15T03:07:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:CP2102.jpg
6
27
1964
47
2015-02-15T03:17:11Z
Admin
1
wikitext
text/x-wiki
CP2102 based TTL to UART USB adapter
4a8be486f9b7408cd8a92791d8ca9e30d1f8b06b
File:24LC512.jpg
6
500
1969
2015-03-04T23:57:30Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
2015 VK Contest Dates
0
499
1981
1967
2015-03-30T23:37:29Z
Admin
1
wikitext
text/x-wiki
2015 VK Contest Dates (Phone)
<pre>
Date Name Start End (UTC) Bands
------------------------------------------------------------------------
21-22 Mar John Moyle 0100 - 0059 (24hrs) All bands
2 May Harry Angel 1000 - 1146 (106mins) 3535 - 3665 kHz
?? May VK Trans Tasman 0800 - 1400 (6hrs) 80m (not held in 2015?)
19 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m
15-16 Aug Rememberance Day 0300 - 0300 (24hrs) All bands
15-16 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
3-4 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
Some [[International contests]]
5d34e907fb0a60e9c0c7761e98c85a3e73f5cb6a
International contests
0
503
1987
1986
2015-03-31T01:16:07Z
Admin
1
wikitext
text/x-wiki
{| class="wikitable"
|+Some International Amateur Radio Contests
|-
|Date
|Name
|Bands
|Mode
|Duration
|More info
|-
|28 March 2015
|CQ World-Wide WPX Contest
|160, 80, 40, 20, 15, 10
|Phone
|48 hours
|http://www.cqwpx.com/
|}
b608f53962b69e921cfbcd8557a5064090c37643
File:0084-voltage-datalogger-v1.0.zip
6
504
1988
2015-03-31T20:58:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-final.jpg
6
505
1990
2015-03-31T21:05:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-inside top.jpg
6
506
1992
2015-03-31T21:08:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-topview.jpg
6
507
1994
2015-03-31T21:11:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-detail1.jpg
6
508
1996
2015-03-31T21:13:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-pcb top.jpg
6
509
1998
2015-03-31T21:31:48Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-sch.pdf
6
510
1999
2015-03-31T21:34:46Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-v1.0-sch.jpg
6
511
2000
2015-03-31T21:37:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TNC-Pi DB9-Female pinout.jpg
6
512
2004
2015-04-07T01:30:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TNC-Pi DB9-Male solderside.jpg
6
513
2005
2015-04-07T01:33:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
TNC-Pi
0
456
2008
2007
2015-04-07T02:48:29Z
Admin
1
/* =DB9 Pinout */
wikitext
text/x-wiki
APRS Terminal Node Controller for the Raspberry Pi
[[File:TNC-Pi.jpg|thumb|none|400px]]
==Circuit Board==
[[File:RPi-PCB top.jpg]]
[[File:RPi-PCB bottom.jpg]]
Bell 202 chip: MX614P
==MX614P output levels==
The audio output voltage seen on this chip is 1.4V peak-to-peak.
[[File:MX614P.jpg]]
==Output Volume==
Trimpot R7 controls the output volume of the TNC-Pi to your radio. It is a single-gang pot and has a range from 0V (fully counter-clockwise) to about 700mV (fully clockwise)
[[File:TNC-Pi R7.jpg]]
The output signals are generated from the MX614P chip. The Audio_OUT on this chip is on pin 7. At any frequency, the output level on this pin is about 1.4V peak-to-peak. This is true for the 487Hz resting tone and the 1200Hz/2200Hz AFSK tones.
==Input Volume==
The input volume to the TNC was not found in any documentation but through experiment I found that a input voltage range between 170mV - 300mV was effective in successfully decoding APRS packets.
==TXDelay==
The time between PTT-on and actual transmit of data can be set with R6 which controls the TX-Delay. At this stage I have no further information on the range or effectiveness of this trimpot.
[[File:TNC-Pi R6.jpg]]
==Radio Header==
The 4-pin socket (header probably missing) labeled 'radio' is to get easy access to the Audio, GND and PTT lines.
[[File:TNC-Pi radio header.png]]
==DB9 Pinout==
The DB9 Female connector on the TNC-Pi board is used to interface RX Audio, TX Audio and PTT to the transceiver.
The pinout is as follows:
[[File:TNC-Pi DB9-Female pinout.jpg]]
Looking at the solder side from a plug (DB9 Male) that fits into the above socket:
[[File:TNC-Pi DB9-Male solderside.jpg]]
TX Audio is the audio coming out of the TNC when transmitting and will go to the radio to be transmitted.
RX Audio is the received audio coming out of the radio that is going to the TCN
PTT (push to talk) is done by the TNC-Pi by tying it to GND. This then puts most receivers into transmit.
d2949c6a3d55343a200b4a4da87f3a5044926199
Basic ssl encryption
0
11
2011
2009
2015-04-07T23:01:39Z
Admin
1
wikitext
text/x-wiki
Basic information on SSL encryption
[http://www.openssl.org/] http://www.openssl.org/
Required libraries for Windows:
(Some may libraries may not be detected by the Windows installer binary)
[http://www.microsoft.com/en-au/download/details.aspx?id=5582] Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
[http://www.microsoft.com/en-au/download/details.aspx?id=2092] Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)
Examples:
- encrypt a file using base64 encoding (using -a or -base64 switch):
<pre>openssl enc -aes-256-cbc -a -salt -in file.dec -out file.enc</pre>
- decrypt a base64-encoded file:
<pre>openssl enc -d -aes-256-cbc -a -in file.enc -out file.dec</pre>
9cb843ecb73d8ee59d40d73f1f88f12c6833444e
Aprs
0
276
2020
1881
2015-04-07T23:45:12Z
Admin
1
wikitext
text/x-wiki
[[File:Aprs.gif|right]]
Automatic Packet Reporting System (APRS) is an amateur radio-based system for real time tactical digital communications of information of immediate value in the local area. In addition, all such data is ingested into the APRS Internet System (APRS-IS) and distributed globally for ubiquitous and immediate access. -- Wikipedia
These pages have been created in maintaining some level of order in the process of getting involved in APRS.
* [[Protocols dealing with APRS]]
* [[Configuring APRS on Linux]]
* [[APRS on Linux - Software Tools and utilities]]
* [[Aprs-on-rpi]] Detailed blog on setting up a Fill-in Digi on a Raspberry Pi
* [[APRS Hardware and electronics]] (Sound cards, TNC's, VOX, RTC, PTT circuits)
The following entries have been created for APRS on Linux:
* [[ACP]] APRS Configuration Panel
* [[aprs-soundmodem]] aprs - USB sound card - soundmodem - aprx
* [[alsa]]
A list of setups that have been successfully configured to run APRS on a Raspberry Pi
{| class="wikitable"
|+APRS stations
|-
|RPi Model
|TNC Method
|Radio
|Usage
|Comments
|-
|A (Rev2)
|USB Sound Card
|[[Icom IC-P2AT]]
|Fill-in Digi
|uses [[GPIO pin on the RPi to trigger PTT]]
|-
|A (Rev2)
|USB Sound Card
|[[Baofeng UV-5R]]
|Rx-Only iGate
|uses [[GPIO pin on the RPi to trigger PTT]]
|-
|B Rev2
|[[TNC-Pi]]
|[[Icom IC-207H]]
|Fill-in Digi and iGate
|needed pre/de-emphasis filters
|-
|B Rev2
|[[TNC-Pi]]
|[[Kenwood TM-211A]]
|Rx-Only iGate
|
|-
|B+
|[[TNC-Pi]]
|[[Yaesu FT-1802M]]
|Rx-Only iGate
|
|}
b288278fabd0d3214a6673d8259e95d4276f7aac
Angles
0
192
2021
817
2015-04-23T10:24:56Z
Admin
1
wikitext
text/x-wiki
Angles
For simple field work I once wanted to work out how to make a simple phone app that could calculate the distance of a point by measuring the compass angle to it measured from two points.
The resulting program does the job very well and has proven its use many times.
Here are some screenshots:
[[File:Angles 1.jpg|none]]
The main opening screen
[[File:Angles 2.jpg|none]]
The graphical result of the given angles and distance.
Download latest and final version: [[File:Angles.zip]] version 25.25.12.
c36674a5e08b46b00d1ea5178169c94a398f9ef3
File:0084-graph-1Ah-discharge-and-charge.png
6
514
2022
2015-04-30T04:28:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-graph-car-starting.png
6
515
2025
2015-04-30T04:39:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-graph-solar-charge-controller.png
6
516
2027
2015-04-30T04:43:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC3525-ESC6-5-PBF SC70.jpg
6
518
2033
2015-06-26T04:04:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0084-self-sampling-21days.png
6
519
2035
2015-07-13T23:31:19Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:CP210x VCP Windows.zip
6
520
2039
2015-07-25T22:36:59Z
Admin
1
CP2101 FTDI driver for Windows XP/Server 2003/Vista/7/8/8.1 (v6.7)
wikitext
text/x-wiki
CP2101 FTDI driver for Windows XP/Server 2003/Vista/7/8/8.1 (v6.7)
5e9e94d1000d07e545ce7c09f847eae6f3b6126e
Mcu-notes-02
0
522
2048
2047
2015-09-26T02:08:23Z
Admin
1
wikitext
text/x-wiki
Getting Started with Arduino
Talk for Westlakes Amateur Radio Club, Teralba NSW Australia
Date: 26 September 2015
- power/USB
- drivers
- Arduino IDE
- IDE settings (board/port)
- demo sketch (blink)
Hardware and I/O
-----------------------
- LED on different port
- Digital out / in
- Analogue in
- PWM
- I2C
- SPI
- RS-232
- sensors
- ultrasonic
- air pressure
- compass / accelerometer / gyroscope (IMU)
- magnetometer
- pir
- barometric pressure / altitude
- temperature
- humidity
- rfid
- gps
- infrared
- touchpad / keyboard
- current
- light
- sound (microphone)
- alcohol / gas
- http://littlebirdelectronics.com.au/collections/sensors?page=4
- shields
- proto
- relay
- ethernet
- LCD
- wireless
- https://www.sparkfun.com/categories/240?page=all
Coding and Libraries
----------------------
- layout of source code
- uploading, debugging, size
- https://www.arduino.cc/en/Reference/HomePage
Other links:
Massimo Banzi on the state of arduino (May 2015)
https://www.youtube.com/watch?v=k_Elf1XBsQ4
Minimal transceiver using Arduino chip (ATMEGA328)
http://www.phonestack.com/farhan/minima.html
d25155b61e5ae682c74e910ea43daa24abe0c119
Raspberry Pi
0
285
2049
1734
2015-09-29T05:39:31Z
Admin
1
wikitext
text/x-wiki
See also [[raspberrypi-models-and-versions]]
* Adding a shutdown/reset button and feedback LED
See: [[rpi-shutdown-button]]
[[rpi-notes-01]]
95b7ca13a5e7d9081098f763ac44a05d9e631412
Easy-rsa
0
524
2071
2069
2015-10-14T03:21:48Z
Admin
1
wikitext
text/x-wiki
easy-rsa is a CLI utility to build and manage a PKI CA (Public Key Infrastructure). In laymen's terms, this means to create a root certificate authority, and request and sign
certificates, including sub-CAs and certificate revokation lists (CRL). These certificates are valid as per X509 can be used for authentication purposes (e.g. vpn, wireless, encryption).
(Setting up on Linux)
Earlier versions of [[Openvpn-setup]] used to include a copy of the 'easy-rsa' scripts in a directory under the OpenVPN documentation (/usr/share/doc/openvpn/examples/), however, since several significant improvements to the easy-rsa scripts have given them a life of their own these scripts have undergone some name changes and are now installed in /usr/bin and /usr/share/easy-rsa/. On major linux distributions they are now kept in their own installer package. The central repository for the latest version of easy-rsa is on Github at https://github.com/OpenVPN/easy-rsa.
Below are examples on how to set up your own PKI
==easy-rsa v1.x and 2.0==
This is the version that came bundled with OpenVPN and lives in the /usr/share/doc/openvpn/examples/easy-rsa/ directory
* Copy the Certification Authority scripts from the OpenVPN examples directory
<pre>
# mkdir /etc/openvpn/easy-rsa
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
</pre>
* Edit /etc/openvpn/easy-rsa/vars according to your organisation. Probably just the lines at the bottom of the file.
<pre>
vi /etc/openvpn/easy-rsa/vars
</pre>
* Prepare the CA environment
<pre>
# cd /etc/openvpn/easy-rsa/
# . ./vars
# ./clean-all
</pre>
Generate CA, server and client certificates
* Generate CERTIFICATE AUTHORITY (CA) CERTIFICATE/KEY:
* Generate BUILD AN INTERMEDIATE CERTIFICATE AUTHORITY CERTIFICATE/KEY:
* Generate BUILD DIFFIE-HELLMAN PARAMETERS (necessary for the server end of a SSL/TLS connection):
<pre>
# ./build-ca
# ./build-key-server server
# ./build-dh
</pre>
* Generate a key for each client:
<pre>
# ./build-key clientname
</pre>
==easy-rsa v2.2==
This is the version that is installed as a separate, required package when installing OpenVPN v2.3 (on Debian Jessie).
First, run the script to put symlinks and some config files into a new directory (the script will create this directory)
<pre>
cd /etc/openvpn
make-cadir my_ca
cd my_ca
</pre>
Several files have now been created. Most of them are symlinks to scripts that create the various PKI parts.
Next, open up the 'vars' file and update the relevant company information at the end of the document. All other information in the vars file can be left as-is.
<pre>
vi vars (and update company information)
</pre>
Then we'll run the vars script (chmod it to 700 it it's not set executable) to set several environment variables into memory. You'll need to do this every time you wish to perform any of the other PKI operations such as creating a new set of client certificates.
<pre>
./vars
</pre>
This command should not produce any significant errors or warnings.
Then we get to the heart of the matter; setting up the CA. This step is only required once and will create a cryptograhically strong certificate that all other certificates depend on.
<pre>
./clean-all (delete any keys from the /keys directory)
./build-dh (generate the diffie-hellman keypairs for entropy)
./pkitool --initca (create a simple certificate database)
./pkitool --server myserver (create a strong CA private and public key certificate)
</pre>
We now have a CA that is able to generate PKI operations such as generating client certificates.
To create a new client certificate key pair:
<pre>
./vars (in case you haven't done so already)
./pkitool client1
</pre>
==easy-rsa v3.x==
This is the latest version of easy-rsa and I have not yet seen it bundled with OpenVPN on Linux.
The instructions are available on the easy-rsa website:
https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md
==Overview of generated files==
* ca.crt
Certificate Authority public key. This file is required for clients to connect to the server. It confirms that the client keys (public and private) have been issued by this CA. This file may be transmitted over an insecure channel and can be left accessible for the world to see.
* server.key
Certificate Authority private key. This file is used to issue and sign new client certificates. It must be kept secret. Chmod to 400 on the server. This file should not leave the server.
* dh1024.pem (or dh2038.pem, or dh4096.pem)
Diffie-Hellman parameters. This file contains the entropy required to produce big prime numbers for strong encryption. This file may be flagged chmod 644 but does not need to leave the server as it only has value for generating new client key pairs.
* client1.crt
Client public key. This file is required for clients to connect to the server. This file may be transmitted over an insecure channel and can be left accessible for the world to see.
* client1.key
Client private key. This file is required for clients to connect to the server. It must be kept secret. Chmod to 400 if possible. This file should not leave the client computer.
4874c05421662519a5f688a6e675349f6ff4fba6
Openvpn-setup
0
267
2072
2070
2015-10-14T03:24:21Z
Admin
1
wikitext
text/x-wiki
[[File:Openvpn logo.png]]
This page describes how to set up an [http://openvpn.net/ OpenVPN] server installation on Debian Linux. For a very basic host-to-host vpn, check out this [[OpenVPN]] page.
The recipe here creates an OpenVPN setup with:
* certificates
* username and password authentication
* multiple clients
* client vpn dhcp
==On the Server (Debian Linux)==
===Install the software===
* Make sure to have 'contrib' listed in /etc/apt/sources.list
<pre>
# apt-get update
# apt-get install openvpn
</pre>
===Set up a Certification Authority===
See the [[easy-rsa]] page for installation details.
===Create vpn client user accounts===
* On the vpn server add a new user group called 'vpn-users'
<pre>
groupadd vpn-users
</pre>
* Create a new vpn account without a shell and make it part of the vpn-users group. We need to do this for every vpn client.
* set the password for the vpn client user account.
<pre>
# useradd -s /bin/false -g vpn-users client1
# passwd client1
</pre>
===Create OpenVPN pam.d authentication plugin===
* create a file /etc/security/vpn.group.allowed
<pre>
# echo "vpn-users" > /etc/security/vpn.group.allowed
</pre>
* copy the default authentication script to create the /etc/pam.d/ovpn plugin
<pre>
# cp /etc/pam.d/login /etc/pam.d/ovpn
</pre>
* edit the ovpn pam file, position the cursor at the first line and insert an auth directive
<pre>
auth required pam_listfile.so onerr=fail item=group sense=allow file=/etc/security/vpn.group.allowed
</pre>
===Create vpn server configuration file===
* create the server configuration file /etc/openvpn/server.conf
<pre>
port 655
proto udp
dev tun0
ca /etc/openvpn/easy-rsa/keys/ca.crt # generated keys
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # keep secret
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
#plugin /usr/lib/openvpn/openvpn-auth-pam.so ovpn # old location
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so ovpn # new location
script-security 3
server 10.9.8.0 255.255.255.0 # internal tun0 connection IP
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo # Compression - must be turned on at both ends
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3 # verbose mode
client-to-client
</pre>
Additional instructions to use your vpn as the client's default internet gateway. [[vpn-gateway]]
===Distribute certificates to client(s)===
* Copy the ca.crt, clientname.crt, clientname.key from the server to the client(s).
For a Linux client, copy the files to /etc/openvpn/.
For a Windows client, copy the files to C:\Program Files\OpenVPN\config\.
==On the Client (Debian Linux)==
(see further down for setting up the client connection on Windows)
===Install the software===
* Make sure to have 'contrib' listed in /etc/apt/sources.list
<pre>
# apt-get update
# apt-get install openvpn
</pre>
===Create client configuration file===
* create the client configuration file at /etc/openvpn/client.conf
<pre>
client
remote remote.vpn.server.address
dev tun0
port 655
proto udp
auth-user-pass
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/clientname.crt
key /etc/openvpn/clientname.key
comp-lzo # Compression - must be turned on at both ends
# add a route to the client see other hosts on the server network
# you may need to update this line to match your network setup
push "route 192.168.0.0 255.255.255.0"
persist-key
persist-tun
verb 3
</pre>
==On the Client (Windows)==
Probably the most used add-on to OpenVPN is the Windows client GUI. The old client GUI is effectively unmaintained, but is still (as of 19 February 2013) included in the official OpenVPN-2.3 installer packages. The new GUI is more advanced and uses the OpenVPN management interface for controlling the OpenVPN daemon and should therefore be more reliable. The new GUI will eventually replace the old GUI in the official installers.
===Install the software===
* Download the openvpn windows installer from http://openvpn.net/index.php/open-source/downloads.html
* Run the installation binary and install the software, just accept all defaults.
===Create the client configuration file===
* open a text editor, create c:\program files\openvpn\config\client.ovpn and add the following lines:
<pre>
client
remote remote.server.ip.address
dev tun
port 655
proto udp
auth-user-pass
nobind
ca ca.crt
cert clientname.crt
key clientname.key
comp-lzo # Compression - must be turned on at both ends
# add a route to the client see other hosts on the server network
# you may need to update this line to match your network setup
push "route 192.168.0.0 255.255.255.0"
keepalive 10 60
ping-timer-rem
verb 3
</pre>
==Start the VPN tunnel==
===On the server (Debian Linux)===
* with the .conf file placed in /etc/openvpn/ the vpn server will be listening for incoming connections automatically when the system is booted.
* use the init script to force a restart of the vpn server
<pre>
/etc/init.d/openvpn restart
</pre>
* check the log files in /var/log/ for debugging
===On the client (Debian Linux)===
* with the .conf file placed in /etc/openvpn/ the vpn client will automatically try to make a connection to the vpn server when the system is booted.
* use the init script to force a restart of the vpn client
<pre>
/etc/init.d/openvpn restart
</pre>
* a prompt asking you for a username and password will appear on the console. Enter the credentials for the client account and press ENTER.
* check the log files in /var/log/ for debugging
===On the client (Windows)===
* From the Windows program files menu, start the OpenVPN GUI program. The openvpn icon will appear in the sytem tray. Right-click on the icon and select 'Connect' on the config for your vpn. A dialog box prompting for a username and password will appear.
[[File:Openvpn-win-gui.PNG]]
Enter the credentials for the client account and click 'Ok'.
That's it! :-)
6db98f35ba8ae43fa44d1e32272facf9563783dc
Vpn-gateway
0
525
2074
2073
2015-10-14T03:35:22Z
Admin
1
wikitext
text/x-wiki
You can use the OpenVPN server as the client's default gateway. This method is used by commercial VPN as-a-service companies to offer overseas client 'exit nodes' in order to bypass any local restrictions or traffic filtering. See [[openvpn-setup]] for setting up the vpn.
The server must be instructed to route and forward any vpn traffic to its default gateway (wherever it is located).
* for a server that is connected with a public ip (e.g. 158.22.51.103)
relevant section in /etc/rc.firewall
<pre>
# forward packets to and from vpn tunnel to local network
echo "1" > /proc/sys/net/ipv4/ip_forward
# allow incoming OpenVPN traffic
$IPTABLES -A INPUT -p UDP -i $INT_IF --dport 655 -m state --state NEW -j ACCEPT
# vpn output rules
$IPTABLES -A OUTPUT -p ALL -s $VPN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $VPN_NW -j ACCEPT
# Forwarding rules
# forward vpn packets to and from local lan
$IPTABLES -A FORWARD -i $VPN_IF -o $INT_IF -j ACCEPT
$IPTABLES -A FORWARD -i $INT_IF -o $VPN_IF -j ACCEPT
# Masquerading rules
# masquerade outgoing vpn traffic to local lan so we receive replies
$IPTABLES -t nat -A POSTROUTING -o $INT_IF -j MASQUERADE
</pre>
add this to the client openvpn config file:
<pre>
redirect-gateway def1 bypass-dhcp
dhcp-option DNS 10.8.9.1
</pre>
e7c741cd23ac9dc75bb56ee70026eaf9d0067610
Rpi-notes-01
0
523
2076
2075
2015-10-16T09:59:30Z
Admin
1
wikitext
text/x-wiki
Getting started with Raspberry Pi
Talk at Westlakes Amateur Radio Club 17 October 2015
https://www.raspberrypi.org/
noobs vs raspbian
checksums and torrents
http://www.nirsoft.net/utils/hash_my_files.html
partitions and sd cards
win32diskimager download and install
http://sourceforge.net/projects/win32diskimager/
dd for windows
http://www.chrysocome.net/dd
writing image to sd card
boot into linux
login
shutdown
set memory split (raspi-config)
find current ip address
GPIO
http://elinux.org/RPi_Low-level_peripherals
--- next ---
Linux
* Putty / logging in
* Home directory and changing directories ~, cd, pwd, ls, root dir, structure, ls –l command explained
* File permissions (dir, owner, group, world)
* Other commands: touch, cat, grep, | (pipe), more, less
* Vi and basic commands: a, dd, x, ., n, :wq, :wq!, ZZ, r, $, ^, gg, G, cw, / (find)
* Datestamp / unix time
* keeping system up to date
HTML
* .html / .htm
* Basic structure: html-head-body, title
* Bold, nbsp, p, br,
* Tables
* Forms
* css
* images
* javascript
PHP
* <?php ?> open and start tags, renaming extention to .php
* Basic commands: phpinfo(), echo, date
* Printing html tags from php
* Variables and arithmetic
* String concatenation
* Commands: substring, include, if-then, while,
* Fetching html form variables
* Accessing mysql from php
MySQL
* Database and table
* Rows, columns, index, auto-increment, id-field, primary key
* Phpmyadmin web interface
* Field types
* SELECT, INSERT, UPDATE, DELETE
* Sorting
106a9b41bfc04668a1881d1e95224db12c9f9385
Wikipost:Copyrights
4
526
2078
2015-10-19T23:50:57Z
Admin
1
Created page with "nothing here, move along.."
wikitext
text/x-wiki
nothing here, move along..
e5d85e38a68daf00f1b03f593344e27b4d14793a
File:SP0620.jpg
6
528
2086
2015-11-13T00:30:00Z
Admin
1
Jaycar pn: SP0620 - SPST PCB Mount Tactile - Metallic Vertical with LED - Red
wikitext
text/x-wiki
Jaycar pn: SP0620 - SPST PCB Mount Tactile - Metallic Vertical with LED - Red
f402b2b18d715ad93d870a54d841075431008cef
File:CH340DS1.PDF
6
529
2090
2015-11-13T08:02:18Z
Admin
1
CH340 datasheet
wikitext
text/x-wiki
CH340 datasheet
0421af3d0711e4237cc4b620696743b0e623145a
File:UART CH341 W7.ZIP
6
530
2092
2015-11-13T08:07:35Z
Admin
1
Drivers for the CH340/341 UART over USB chip
wikitext
text/x-wiki
Drivers for the CH340/341 UART over USB chip
17219b468403ead80086cce547d8ecf8c15910b3
File:Nano-clone CH340.JPG
6
532
2100
2015-11-13T08:26:44Z
Admin
1
Cheap Arduino Nano clone for three dollars off eBay. Uses the CH340 UART.
wikitext
text/x-wiki
Cheap Arduino Nano clone for three dollars off eBay. Uses the CH340 UART.
c520aa0044791a08fab92a0b12c5865853615c1c
CH340-UART
0
531
2105
2104
2015-11-13T08:37:59Z
Admin
1
wikitext
text/x-wiki
This is a cheap alternative IC for the FTDI chip to provide UART over USB.
Manufacturer: WinChipHead
==Datasheet:==
* CH340DS1 [[File:CH340DS1.PDF]]
==USB information==
Vendor ID: 1A86
Device ID: 7523
REV: 0254
==Manufacturer information==
Manufacturer: Jiangsu Nanjing QinHeng Electronics Co
Websites: http://www.wch-ic.com and http://www.wch.cn and http://www.winchiphead.com
==Software/Drivers==
Drivers: http://www.wch.cn/download/CH341SER_ZIP.html
Locally hosted driver for Windows 7: [[File:UART CH341 W7.ZIP]]
I had success with these drivers on a $3 (YES!) Arduino Nano clone board from China.
[[File:Nano-clone CH340.JPG|190px|thumb|none|CH340 chip on Nano clone]]
==Alternate links==
* http://www.5v.ru/ch340g.htm
f024837e551b694a25cfa66b10c6aebd9327b35a
SafeList
0
220
2110
2109
2015-11-16T22:10:07Z
Admin
1
wikitext
text/x-wiki
[[File:Safelist icon.png]] SafeList is an application to encrypt and decrypt information for privacy purposes.
It uses AES-128 as it's main encryption engine and does not use any network communication to further isolate your data and prevent leakage to other channels.
* https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
Google Play app webiste: https://play.google.com/store/apps/details?id=map.safelist
Developer Blog for SafeList available. Click the below link for more news updates.
http://captchadevt.blogspot.com.au/
Suggested use:
* password lists
* phone numbers
* bank account login details
* credit card numbers
* etc..
[[File:Safelist feature graphic small.jpg|none]]
==Screen shots==
{| style="background-color:#ffffff;" cellpadding="0" cellspacing="10" border="0"
|[[File:Safelist-ss1.PNG|150px|none]]
|[[File:Safelist-ss2.PNG|150px|none]]
|[[File:Safelist-ss3.PNG|150px|none]]
|}
==Downloads==
The application can be found on Google Play. Look for 'safelist' and the results should contain a link to the app.
==Usage==
After installing the program, you will need to set your own password. Initially, to log in, just press the 'Login' button. From the list of displayed items, press the Android Menu button and select 'settings'. From the settings page select 'Change Master Password'. You only need to set the bottom two fields to your new password and press save. Your new password is immediately active.
==Support and Feedback==
please email me at [mailto:captchadevt@gmail.com?Subject=SafeList_feedback captchadevt@gmail.com] for app support questions and feedback.
bf5f067eafc63f1c782144bc6475d62352268c45
Linux-cli-intro
0
527
2111
2085
2015-11-26T04:15:15Z
Admin
1
wikitext
text/x-wiki
The following pointers can be used to get a basic understanding of a Linux system.
Concepts:
*kernel
*debian/raspbian
*root
*shell
*filesystem (ext2)
*firmware
*apt
*mount points
*shm
*proc
*dev
*tty
*stderr/stdout
*sound
*putty/ssh
*ncurses (text based gui)
<pre>
command line
------------
shutdown - shut down or reboot system
passwd - change password
man - man(ual) page with info
date - prints date and time
sudo - do as root
su - substitute user
ls - list files in a directory
alias - shortcuts to commands
ps - process information
df - disk free
du - disk usage
cat - print contents (of a file)
echo - print text (on screen)
touch - create/update file/timestamp
more - show output per-screen
grep - filter output by keyword(s) match
head - show top of (a file)
tail - show bottom (of a file)
sort - sort alphabetically
find - search for matching files or directories
cp - copy file(s) or directories
mv - move file(s) or directories
rm - delete file(s)
pwd - print working directory
cd - change directory
mkdir - make directory
rmdir - remove directory
chown - change ownership permissions of a file or directory
chgrp - change group permissions of a file or directory
chmod - change access and execute permissions of a file or directory
groups - show group memberships
ifconfig - show network interfaces
netstat - show network connections
cron - execute scheduled commands
crontab -e - edit user's own crontab
crontab -e -u <user> - edit other user's crontab
crontab -l - show contents of crontab
<cmd> & - background a process
nohup <cmd> - background a process independent of shell
screen - background shell
CTRL-PGUP - scroll screen up
CTRL-PGDN - scroll screen down
arrow up - previous command
arrow down - next command
history - show list of previous commands
!<nr> - issue command nr
apt (software package management)
apt-get update - fetch a current list of all packages from the Internet
apt-get upgrade - check for and install any packages that need updating
apt-get clean - empty cache of downloaded packages
apt-cache search <name> - find if a package exists
apt-cache show <name> - show detailed information about a package
apt-get install <name> - install a package
apt-get remove <name> - remove a package
apt-get remove --purge <name> - remove a package + any configuration files
dpkg -l - show list of all installed packages
aptitude - curses based package management
rapspi-config - configure raspberry pi
rpi-update - update rpi firmware
startx - start x environment
iptraf - monitor network activity
bwm-ng - bandwidth monitor
Files
-----
/etc/hostname
/etc/hosts
/etc/debian_version
/etc/fstab
/etc/network/interfaces
/etc/resolv.conf
/etc/wpa.conf
/etc/rc.local
/etc/apt/sources.list
/etc/default/keyboard
Directories
-----------
/usr/local/bin
/home
/boot
/etc
/usr
/var/www
/mnt
/tmp
/dev/shm
Applications
------------
Apache - web server
Samba - Windows-compatible File Server
MySQL - Database Server
NTP - Time server
Programming
-----------
Bash
Python
Perl
C/C++
PHP
Scratch (RPi)
Interfacing with the Raspberry Pi GPIO
--------------------------------------
Level Converter
Python
I2C
</pre>
Further reading:
----------------
http://www.debian.org
http://www.raspberrypi.org
http://www.themagpi.com
Putty, the Windows SSH client:
------------------------------
http://www.chiark.greenend.org.uk/~sgtatham/putty/
c1bdaace5aad03cdf3e83ca1cfd5e69dd1b090e2
Copy-rootfs
0
265
2112
2079
2016-01-20T03:44:35Z
Admin
1
wikitext
text/x-wiki
This is a command to copy the current (running, live) root filesystem to another (attached) disk. Last tested with Debian 8.1 (Jessie) and all works fine.
* add the new disk (e.g. /dev/sdb) to the system
* set up a linux partition and make it active (enable boot flag)
* format the target filesystem to ext2
* mount the target filesystem to /mnt
* copy files across..
<pre>
(cd / ; tar -cf - . --one-file-system) | (cd /mnt ; tar xvfpB - )
cp -r /dev/* /mnt/dev/
</pre>
* find out new disk UUID (ls /dev/disk/by-uuid/....)
* update UUID's in fstab and grub.cfg
<pre>
sed -i 's/old-uuid/new-uuid/g' /mnt/etc/fstab
sed -i 's/old-uuid/new-uuid/g' /mnt/boot/grub/grub.cfg
</pre>
* install grub
<pre>
grub-install --root-directory=/mnt /dev/sdb
</pre>
* shutdown system
* detach old disk
* move new disk to Primary Master (IDE)
* boot system with new disk
* reinstall grub one final time:
<pre>
update-grub
grub-install /dev/sda
-or-
dpkg-reconfigure grub-pc
</pre>
===TROUBLESHOOTING===
- at the blue grub menu, enter the edit mode (press 'e') and change the UUID=xxxx to /dev/sda1
- if you've forgotten to update the uuid, you can still boot the disk
<pre>
grub rescue>
grub rescue> set prefix=(hd0,1)/boot/grub
grub rescue> insmod ext2
grub rescue> set root=(hd0,1)
</pre>
(find out the kernel image name using ls, ls (hd0,1)/, ls (hd0,1)/boot)
<pre>
grub rescue> linux /boot/vmlinuz-3.16.0-4-686-pae root=UUID=xxxxx ro recovery nomodeset
grub rescue> initrd /boot/initrd.img-3.16.0-4-686-pae
grub rescue> boot
</pre>
(instead of the UUID you can also use 'root=/dev/sda1')
(you can also remove 'ro recovery nomodeset')
86a0b5d27422c2becad469f5c5d50de223e6f165
File:Attiny85 pinout.png
6
533
2123
2016-01-22T04:15:32Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:4-small-solar-panels.png
6
534
2126
2016-01-26T03:24:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Solar-test-setup.jpg
6
537
2132
2016-01-26T04:02:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 4-small-solar-panels open-circuit-voltage.png
6
536
2134
2128
2016-01-26T04:05:32Z
Admin
1
Admin uploaded a new version of "[[File:Datalogger 4-small-solar-panels open-circuit-voltage.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
ATtiny84 PWM
0
314
2137
2003
2016-02-01T02:53:40Z
Admin
1
wikitext
text/x-wiki
<pre>
// Example #1 PWM on pin PB2 (OC0A which is on 8-bit timer0)
// For 8MHz clock: 61.2kHz period (16.25ms) of which half is on and half is off
DDRB = 1<<DDB2; // make OC0A (DDB2) PWM output pin
TCCR0A = (1<<COM0A1) | (1<<COM0B0) | (1<<WGM00); // Clear OC0A/OC0B on Compare Match (bit 7 + 6)
// PWM, Phase Correct
TCCR0B = (1<<CS02); // clkI/O/256(from prescaler)
// not used // TIMSK1=0B00000010; //enable output compare interrupt for OCR1A
OCR0A = 127; // set 50% duty cycle (0.5*256)
// Example #2 PWM on pin PA6 (OC1A which is on 16-bit Timer1)
// For 8MHz clock: 61.2kHz period (16.25ms) of which half is on and half is off
DDRA = 1<<DDA6; // make OC1A (DDA6) PWM output pin
TCCR1A = (1<<COM1A1) | (1<<COM1B0) | (1<<WGM00); // Clear OC1A/OC1B on Compare Match (bit 7 + 6)
// PWM, Phase Correct
TCCR1B = (1<<CS02); // 256 prescaler
OCR1A = 127; // set 50% duty cycle (0.5*256)
</pre>
See also:
* [[ATtiny84_ADC]]
* [[ATtiny85_PWM]]
9e3ba8b9eea7f1251de72e0337e24370f14e2e21
ATtiny84 ADC
0
501
2138
1977
2016-02-01T02:54:35Z
Admin
1
wikitext
text/x-wiki
Here's a snippet of code to use the ADC from an ATtiny84 microcontroller. In this example, the code was written for a t84 (Atmel AVR ATtiny84), but with minimal adjustments this code should work on microcontrollers from the same family (such as the ATtiny25, ATtiny45, ATtiny24, ATtiny44 and ATiny85) as well.
<pre>
void initADC()
{
/* this function initialises the ADC
ADC Notes
Prescaler
ADC Prescaler needs to be set so that the ADC input frequency is between 50 - 200kHz.
Example prescaler values for various frequencies
Clock Available prescaler values
---------------------------------------
1 MHz 8 (125kHz), 16 (62.5kHz)
4 MHz 32 (125kHz), 64 (62.5kHz)
8 MHz 64 (125kHz), 128 (62.5kHz)
16 MHz 128 (125kHz)
below example set prescaler to 16 for mcu running at 1MHz
*/
ADMUX =
(0 << REFS1) | // Sets ref. voltage to Vcc, bit 1
(0 << REFS0) | // Sets ref. voltage to Vcc, bit 0
(0 << MUX5) | // use ADC1 for input (PA1), MUX bit 5
(0 << MUX4) | // use ADC1 for input (PA1), MUX bit 4
(0 << MUX3) | // use ADC1 for input (PA1), MUX bit 3
(0 << MUX2) | // use ADC1 for input (PA1), MUX bit 2
(0 << MUX1) | // use ADC1 for input (PA1), MUX bit 1
(1 << MUX0); // use ADC1 for input (PA1), MUX bit 0
ADCSRA =
(1 << ADEN) | // Enable ADC
(1 << ADPS2) | // set prescaler to 16, bit 2
(0 << ADPS1) | // set prescaler to 16, bit 1
(0 << ADPS0); // set prescaler to 16, bit 0
ADCSRB =
(1 << ADLAR); // left shift result (for 8-bit values)
// (0 << ADLAR); // right shift result (for 10-bit values)
}
int main( void )
{
initADC();
while(1)
{
ADCSRA |= (1 << ADSC); // start ADC measurement
while (ADCSRA & (1 << ADSC) ); // wait till conversion complete
if (ADCH > 128)
{
// ADC input voltage is more than half of VCC
} else {
// ADC input voltage is less than half of VCC
}
}
return 0;
}
</pre>
See also:
* [[ATtiny84_PWM]]
* [[ATtiny85_ADC]]
* [[C and C++]]
5391d348de5f1bc9e91df4c1066a5d5ba602fb43
ATtiny85 PWM
0
239
2140
2139
2016-02-01T09:12:34Z
Admin
1
wikitext
text/x-wiki
This is a cut-and-paste example of setting PWM on a Atmel AVR ATtiny85. It uses pin PB0.
[[File:Attiny85_pinout.png]]
Tested on: ATtiny85
<pre>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
#define LED PB0 // OC0A PWM output pin (on t84=PB2, t85=PB0)
#define SWITCH PB4 // ptt switch
const uint8_t sine_wave_50[] PROGMEM=
{
133,145,158,168,179,189,196,204,209,214,
217,219,219,219,217,212,207,199,191,184,
176,166,156,143,133,122,112, 99, 89, 79,
71, 64, 56, 48, 43, 38, 36, 36, 36, 38,
41, 46, 51, 59, 66, 77, 87, 97,110,122,
};
void init_pwm()
{
//Set PORTB1 pin as output
DDRB=0xFF;
// initial OCR1A value
OCR0A=80;
//Output compare OC1A 8 bit non inverted PWM
TCCR0A=0x91;
//start timer without prescaler
TCCR0B=0x01;
//enable output compare interrupt for OCR1A
TIMSK=0x10;
}
int main()
{
pinMode(SWITCH,OUTPUT);
digitalWrite(SWITCH,LOW);
init_pwm();
uint8_t step=0;
while(1)
{
digitalWrite(SWITCH,HIGH);
// send a 1000Hz tone
for (step=0; step<50; step++)
{
OCR0A = pgm_read_byte(&sine_wave_50[step]);
_delay_us(20);
}
}
return 0;
}
</pre>
See also:
* [[ATtiny84_PWM]]
* [[ATtiny85_ADC]]
16c4f60e96262dd7750e41e39cb98e36c594dff8
2016 VK Contest Dates
0
538
2144
2016-03-03T03:45:36Z
Admin
1
Created page with "2016 VK Contest Dates (Phone) <pre> Date Name Start End (UTC) Bands ------------------------------------------------------------------------ ..."
wikitext
text/x-wiki
2016 VK Contest Dates (Phone)
<pre>
Date Name Start End (UTC) Bands
------------------------------------------------------------------------
19-20 Mar John Moyle 0100 - 0059 (24hrs) All bands
2 May Harry Angel 1000 - 1146 (106mins) 3535 - 3665 kHz
16 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m, 80m, 40m
13-14 Aug Rememberance Day 0300 - 0300 (24hrs) All bands
20-21 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
1-2 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
Some [[International contests]]
a342bd5923664373969b0c23c214733a306e99f1
File:Yellow-tailed black cockatoo.jpg
6
539
2147
2016-05-31T10:39:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Frogmouth.jpg
6
540
2149
2016-05-31T10:43:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Sun-hemmi-p280 front.jpg
6
542
2159
2016-06-15T09:52:55Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Sun-hemmi-p280 back.jpg
6
543
2161
2016-06-15T09:54:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Faber-Castell-52-82 front.jpg
6
548
2172
2016-06-15T10:38:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Faber-Castell-52-82 back.jpg
6
549
2174
2016-06-15T10:42:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Faber-castell-67-87 front.jpg
6
550
2175
2016-06-15T10:46:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Oddities
0
102
2187
2157
2016-06-15T22:38:53Z
Admin
1
wikitext
text/x-wiki
Mixed bag of things.
[[dust-storms-23-sep-2009]]
[[recipes]]
[[observations of the Australian culture by a Dutch immigrant]]
[[sliderules]]
34a6d3c01238f534c5126ab295c54fde8029c56d
File:Faber-Castell-67-87 back.jpg
6
551
2188
2016-06-21T22:38:30Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Sun-hemmi-versalog-II front.jpg
6
544
2221
2164
2016-06-24T09:12:25Z
Admin
1
Admin uploaded a new version of "[[File:Sun-hemmi-versalog-II front.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Sun-hemmi-versalog-II back.jpg
6
545
2222
2165
2016-06-24T09:13:38Z
Admin
1
Admin uploaded a new version of "[[File:Sun-hemmi-versalog-II back.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Moteino 1.0.6.zip
6
553
2229
2016-06-27T09:34:13Z
Admin
1
Moteino Core files
wikitext
text/x-wiki
Moteino Core files
4f0431609be5479f3d2cf71920ebbc52fd91ebce
File:RFM69-master.zip
6
554
2233
2016-06-27T09:50:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SPIFlash-master.zip
6
555
2235
2016-06-27T09:52:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LowPower-master.zip
6
556
2243
2016-06-27T11:21:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Moteino-setup
0
552
2245
2244
2016-06-27T11:38:10Z
Admin
1
wikitext
text/x-wiki
Starting to use some Moteinos always left me a bit searching for a clear and simple guide on how to set up the boards.txt and libraries in the Arduino IDE.
We distinguish two specific features of the Arduino IDE:
> use custom boards (Moteino, Anarduino, etc..)
- Having a way to easily select a custom board will allow you to program these boards without having to worry about which microcontroller is on the board or how they are wired.
- In order to program a sketch to a custom board you select the corresponding board in the Arduino IDE menu at: Tools - Boards -
- custom boards need to be added to the 'hardware' folder (either in the user's sketchbook's or arduino's program's 'hardware' folder)
> use custom libraries (Dallas, LCD, etc..)
- To add sensors or functions to your sketch you can load specific libraries. These will have the proper protocols coded in and work seamlessly with Arduino code. Libraries usually don't care on which board they run.
- In order to make use of a custom library you reference to them in your code with the '#include' statement
- custom libraries need to be added to the 'libraries' folder (either in the user's sketchbook's or arduino's program's 'libraries' folder)
To add support for Moteino in the Arduino IDE we need to add both 'hardware' and 'libraries'.
* the 'hardware' (Moteino Core files) will add the Moteino and Moteino MEGA boards to the list of selectable boards
* the 'libaries' (RFM69 and SPIFlash) will allow the sketches to communicate with the HopeRF Radio Module (and optional EEPROM module for OTA programming)
There are two ways to add the 'hardware' to Arduino.
* copy files manually into the Arduino hardware folder
* with the new Arduino Board Manager (available in version 1.6.x and up)
==Manual Method (boards and libraries)==
===Step 1 - Install the Moteino Core files into the Arduino installation folder===
* download and unzip the core file:
Moteino Core: [[File:Moteino 1.0.6.zip]] (local copy)
Github source: https://github.com/LowPowerLab/Moteino/tree/master/MEGA/Core
Enter the unzipped 'Moteino' directory and:
* rename the 'avr' directory to 'moteino'
* move the newly named 'moteino' directory into ~/sketchbook/hardware/
===Step 2 - Install the RFM69, LowPower and SPIFlash libraries===
* download and unzip these three files:
RFM69: [[File:RFM69-master.zip]] (local copy)
Github source: https://github.com/LowPowerLab/RFM69
LowPower: [[File:LowPower-master.zip]] (local copy)
Github source: https://github.com/LowPowerLab/LowPower
SPIFlash: [[File:SPIFlash-master.zip]] (local copy)
Github source: https://github.com/LowPowerLab/SPIFlash
* after unzipping, rename the RFM69-master folder to just 'RFM69'
* do the same with the unzipped LowPower-master and SPIFlash-master folders
===Step 3 - check for proper workings===
Start up the Arduino IDE and confirm that:
* the Moteino and Moteino MEGA boards can be selected from the list of boards
* in the Libraries menu you can see the RFM69, Low-Power and SPIFlash libraries
==Easy Method (boards only)==
===Step 1 - Install the Moteino Core files into the Arduino installation folder===
There's actually only one step to this..
* Open the Arduino IDE and from the menu select File - Preferences
* copy and paste this path for a new Board Manager URL: https://lowpowerlab.github.io/MoteinoCore/package_LowPowerLab_index.json
* Click OK and in the menu now go to: Tools - Board - Board Manager
* wait until the download has completed and from the list select the 'Moteino' entry and click 'Install'
* once the installation has completed you can now select the Moteino boards from the boards menu
That's it!
One more thing for actually using the Moteinos:
The RFM69 library is suitable for both the 20mW RFM69(C)W and the 100mW RFM69H(C)W modules (The 'C' only indicates Compatibility with the older RFM12B footprint, functionality wise they are the same).
If you have the higher-powered 100mW version (RFM69HCW or RFM69HW) make sure to include the IS_RFM69HW define in your code:
#define IS_RFM69HW //uncomment only for RFM69HW! Remove/comment if you have RFM69W!
The Moteino demo code also clearly indicates this.
21e1bc83d20fe644ba757594ff527ddb7d9ff463
File:Pickett-n1006-es front.jpg
6
546
2274
2169
2016-07-01T10:20:11Z
Admin
1
Admin uploaded a new version of "[[File:Pickett-n1006-es front.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pickett-n1006-es back.jpg
6
547
2275
2170
2016-07-01T10:22:48Z
Admin
1
Admin uploaded a new version of "[[File:Pickett-n1006-es back.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Plane-landing.jpeg
6
558
2282
2016-07-07T09:46:32Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Car-on-dirt-road.jpeg
6
559
2283
2016-07-07T09:50:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Explosions-in-space.jpeg
6
560
2284
2016-07-07T09:52:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Monitor-text-beeps.jpeg
6
561
2285
2016-07-07T09:56:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Satellite-in-orbit.jpeg
6
562
2286
2016-07-07T09:57:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Knife-stabbing.jpeg
6
563
2287
2016-07-07T10:00:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bomb-countdown.jpeg
6
564
2289
2016-07-07T10:02:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Camera-on-a-ship.jpeg
6
565
2290
2016-07-07T10:06:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Binoculars.jpg
6
557
2292
2280
2016-07-07T10:09:29Z
Admin
1
Admin uploaded a new version of "[[File:Binoculars.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Explosion.jpeg
6
566
2293
2016-07-07T10:47:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pickett-N600-ES front.png
6
569
2301
2300
2016-07-15T10:52:40Z
Admin
1
Admin uploaded a new version of "[[File:Pickett-N600-ES front.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pickett-N600-ES back.jpg
6
570
2302
2016-07-15T10:54:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pickett-N600-es back.jpg
6
568
2304
2303
2016-07-15T11:01:05Z
Admin
1
Admin uploaded a new version of "[[File:Pickett-N600-es back.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pickett-N600-es front.jpg
6
567
2305
2297
2016-07-15T11:04:00Z
Admin
1
Admin uploaded a new version of "[[File:Pickett-N600-es front.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Powertech MP3129 solar-charge-controller.jpg
6
571
2306
2016-08-18T01:07:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Kemo M149 solar-charge-controller.jpg
6
572
2308
2016-08-18T22:05:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Powertech-MB-3526.jpg
6
573
2310
2016-08-18T22:14:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73831.jpg
6
575
2313
2016-08-18T22:21:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC4054.jpg
6
576
2314
2016-08-18T22:26:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Solar-Charge-Controller pwm blue.jpg
6
577
2318
2016-08-18T22:33:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue-PWM-SCC-Example.png
6
578
2322
2016-08-22T00:04:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue-PWM-Solar-Charge-Controller manual.jpg
6
579
2324
2016-08-22T00:11:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:KEMO-M149 charge-example.png
6
580
2327
2016-08-30T09:14:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MB3526-charge-example.png
6
581
2330
2016-09-01T03:39:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC-4054-charge-example.png
6
582
2332
2016-09-01T03:42:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:CMP12-24 Black-Orange Solar-Charge-Controller.jpg
6
584
2337
2016-09-01T03:50:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:CMP12-24 Black-Orange Solar-Charger manual.pdf
6
585
2339
2016-09-01T03:51:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MP3129 manual.pdf
6
586
2341
2016-09-01T03:54:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LTC-4054-42xf.pdf
6
587
2343
2016-09-01T03:59:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73831t.pdf
6
588
2344
2016-09-01T04:01:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MP3129-charge-example.png
6
583
2346
2335
2016-09-05T10:32:36Z
Admin
1
Admin uploaded a new version of "[[File:MP3129-charge-example.png]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0124-433 v1.0.zip
6
589
2349
2016-09-06T01:22:39Z
Admin
1
PCB dipole antenna for 433MHz
wikitext
text/x-wiki
PCB dipole antenna for 433MHz
bbd0c7648c35bfb86ec3a7b8903e7d8017bb3b5e
File:0124-868 v1.0.zip
6
591
2352
2016-09-06T01:24:19Z
Admin
1
PCB dipole antenna for 868MHz
wikitext
text/x-wiki
PCB dipole antenna for 868MHz
6556e2db90a65f5aaeea951b2c6a171c45e76966
File:0124-915 v1.0.zip
6
592
2354
2016-09-06T01:25:29Z
Admin
1
PCB dipole antenna for 915MHz
wikitext
text/x-wiki
PCB dipole antenna for 915MHz
4818a9f1eb10609a9d29597775fb9c09c4739de2
File:VNA-433-PCB-dipole.jpg
6
593
2356
2016-09-06T01:28:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Test-setup PCB-dipole SDR-Kits.jpg
6
594
2360
2016-09-06T01:31:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:VNA-868-PCB-dipole.jpg
6
595
2367
2016-09-06T01:36:48Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:VNA-915-PCB-dipole.jpg
6
597
2369
2016-09-06T01:38:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0124-433 PBC dipole diptrace.zip
6
599
2374
2016-09-06T01:47:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0124-868 PBC dipole diptrace.zip
6
600
2376
2016-09-06T01:47:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0124-915 PBC dipole diptrace.zip
6
601
2377
2016-09-06T01:47:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
0124-868
0
596
2378
2375
2016-09-06T01:48:24Z
Admin
1
wikitext
text/x-wiki
PCB Dipole antenna for 868MHz
Designed with Diptrace
The antenna is attached to the VNA with a 22.5cm length of RG174. On 868MHz this two half-wavelengths(VF=0.65).
The following graph shows the resulting VNA plot for this antenna:
[[File:VNA-868-PCB-dipole.jpg]]
The above plot is for the dipole tuned for 868MHz. The blue line shows an SWR of 1.1:1 at 867MHz. The dip is much wider than on 433MHz and has a bandwidth of about 51MHz (838 to 889MHz) for an SWR of 1.5:1 or less. The red line shows an impedance of 47.48 Ohms for this frequency, so a fairly close match for the radio.
* fed with one wavelength (22.5cm) RG-174
* bandwith below 1.5:1 SWR = 51MHz
* each dipole leg is 6.4cm
[[File:Test-setup PCB-dipole SDR-Kits.jpg|PCB dipole prototype testing]]
During testing (915MHz dipole shown in picture), the antenna was simply were left hanging down, away from any nearby metallic or organic objects.
Some general things to keep in mind about these designs:
* This is a half-wave dipole and therefore it does not have a 50 ohm feedpoint impedance. You will have some rf coming back to the radio on transmit but due to the rigid and balanced PCB based design and the accurate calibration of the length of the dipole legs using the VNA this will be minimal.
* To keep the impedance mismatch from getting worse it is important to only use feedline lengths of (multiples of) a half wavelength (compensated for the appropriate velocity factor) for the frequency of interest. See the picture in this post to see the effects of different feedline lengths: https://lowpowerlab.com/forum/rf-range-antennas-rfm69-library/small-loop-antennas-433-mhz/msg14061/#msg14061
* coax feedline losses are siginificant at these frequencies, use the lowest number of half-wave multiple lengths possible.
* I tested these dipoles on 1.6mm thick FR4 substrate PCBs with 1 ounce copper from OSH Park. Feel free to use these designs to manufacture elsewhere but it is not guaranteed that the results will be the same. Heck, even OSH Park could end up supplying you with different materials, but this is what worked for me.
The PCB design for this antenna can be ordered directly from OSH Park: https://oshpark.com/profiles/captcha
Alternatively, if you wish to make any modifications, you may download the zip file with the gerbers or the Diptrace design files from this site.
* [[File:0124-868 v1.0.zip]] Gerbers
* [[File:0124-868 PBC dipole diptrace.zip]] Diptrace PCB design
2d81ca2fed0b95b070c00ced6ab8cc7af5b976c4
0124-433
0
590
2379
2372
2016-09-06T01:49:16Z
Admin
1
wikitext
text/x-wiki
PCB Dipole antenna for 433MHz
Designed with Diptrace
The antenna is attached to the VNA with a 22.5cm length of RG174. On 433MHz this is a half-wavelength (VF=0.65).
The following graph shows the resulting VNA plot for this antenna:
[[File:VNA-433-PCB-dipole.jpg]]
The above plot is for the dipole tuned for 433MHz. The blue line is SWR and shows a dip around 434.8MHz. Close enough for using it on 433MHz. The SWR (top left, in blue) shows a value of 1.11:1 for this frequency. The red line shows an impedance at this frequency of 45.62 Ohms, reasonably close to matching it with the radio which expects 50 ohms. The bandwidth of the antenna with an SWR of 1.5:1 or less is about 15MHz (from 427 to 442MHz). More than sufficient to cater for any variations in operating frequency.
* fed with one half wavelength (22.5cm) RG-174
* bandwith below 1.5:1 SWR = 15MHz
* each dipole leg is 13.3cm
[[File:Test-setup PCB-dipole SDR-Kits.jpg|PCB dipole prototype testing]]
During testing (915MHz dipole shown in picture), the antenna was simply were left hanging down, away from any nearby metallic or organic objects.
Some general things to keep in mind about these designs:
* This is a half-wave dipole and therefore it does not have a 50 ohm feedpoint impedance. You will have some rf coming back to the radio on transmit but due to the rigid and balanced PCB based design and the accurate calibration of the length of the dipole legs using the VNA this will be minimal.
* To keep the impedance mismatch from getting worse it is important to only use feedline lengths of (multiples of) a half wavelength (compensated for the appropriate velocity factor) for the frequency of interest. See the picture in this post to see the effects of different feedline lengths: https://lowpowerlab.com/forum/rf-range-antennas-rfm69-library/small-loop-antennas-433-mhz/msg14061/#msg14061
* coax feedline losses are siginificant at these frequencies, use the lowest number of half-wave multiple lengths possible.
* I tested these dipoles on 1.6mm thick FR4 substrate PCBs with 1 ounce copper from OSH Park. Feel free to use these designs to manufacture elsewhere but it is not guaranteed that the results will be the same. Heck, even OSH Park could end up supplying you with different materials, but this is what worked for me.
The PCB design for this antenna can be ordered directly from OSH Park: https://oshpark.com/profiles/captcha
Alternatively, if you wish to make any modifications, you may download the zip file with the gerbers or the Diptrace design files from this site.
* [[File:0124-433 v1.0.zip]] Gerbers
* [[File:0124-433 PBC dipole diptrace.zip]] Diptrace PCB design
4824540dd2b7c79b8bda6d760dc149c72d81dc84
0124-915
0
598
2380
2371
2016-09-06T01:49:40Z
Admin
1
wikitext
text/x-wiki
PCB Dipole antenna for 915MHz
Designed with Diptrace
The antenna is attached to the VNA with a 22cm length of RG174. On 9158MHz this close to two half-wavelengths(VF=0.65).
The following graph shows the resulting VNA plot for this antenna:
[[File:VNA-915-PCB-dipole.jpg]]
This plot is for 915MHz and shows an SWR of 1.29:1 for this frequency. The lowest SWR is slightly lower in frequency, but negligible for our purposes. I just left the marker at 915MHz. The antenna has a bandwidth of 43MHz (888 - 931MHz) for an SWR of 1.5:1 or less. The red line shows an impedance of 42.64 Ohms at 915MHz.
* fed with one wavelength (22cm) RG-174
* bandwith below 1.5:1 SWR = 43MHz
* each dipole leg is 6.0cm
[[File:Test-setup PCB-dipole SDR-Kits.jpg|PCB dipole prototype testing]]
During testing (915MHz dipole shown in picture), the antenna was simply were left hanging down, away from any nearby metallic or organic objects.
Some general things to keep in mind about these designs:
* This is a half-wave dipole and therefore it does not have a 50 ohm feedpoint impedance. You will have some rf coming back to the radio on transmit but due to the rigid and balanced PCB based design and the accurate calibration of the length of the dipole legs using the VNA this will be minimal.
* To keep the impedance mismatch from getting worse it is important to only use feedline lengths of (multiples of) a half wavelength (compensated for the appropriate velocity factor) for the frequency of interest. See the picture in this post to see the effects of different feedline lengths: https://lowpowerlab.com/forum/rf-range-antennas-rfm69-library/small-loop-antennas-433-mhz/msg14061/#msg14061
* coax feedline losses are siginificant at these frequencies, use the lowest number of half-wave multiple lengths possible.
* I tested these dipoles on 1.6mm thick FR4 substrate PCBs with 1 ounce copper from OSH Park. Feel free to use these designs to manufacture elsewhere but it is not guaranteed that the results will be the same. Heck, even OSH Park could end up supplying you with different materials, but this is what worked for me.
The PCB design for this antenna can be ordered directly from OSH Park: https://oshpark.com/profiles/captcha
Alternatively, if you wish to make any modifications, you may download the zip file with the gerbers or the Diptrace design files from this site.
* [[File:0124-915 v1.0.zip]] Gerbers
* [[File:0124-915 PBC dipole diptrace.zip]] Diptrace PCB design
555bc927b4a56b732c4cf9a9422ca25c8bad6661
PCB designs
0
87
2381
2366
2016-09-06T01:50:22Z
Admin
1
Admin moved page [[Pending PCB manufacturing]] to [[PCB designs]]
wikitext
text/x-wiki
Current (and old) PCB related projects:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Project</b>
|style="background-color:#f2f2f2;"|<b>Description</b>
|style="background-color:#f2f2f2;"|<b>Schematic Design</b>
|style="background-color:#f2f2f2;"|<b>PCB Design</b>
|style="background-color:#f2f2f2;"|<b>Gerbers</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|-
|[[mcu_0050-handheld-tempsensor]]
|Handheld Tempsensor
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0050-gerbers-v1.0.zip]]
|-
|[[mcu_0051-lcd-i2c-board]]
|I2C LCD Board
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0051-gerbers.zip]]
|-
|[[mcu_0053-AVR-Fuse-Resetter]]
|AVR Fuse Resetter
|style="color:black"|90%
|style="color:black"|70%
|style="color:red"|incomplete
|x1 join nets in schematic, use ZIF socket if possible, use ic sockets in pcb
|-
|[[mcu_0055-rs232-tempsensor]]
|RS232 temp sensor add-on board
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0055-gerbers-v1.0.zip]]
|-
|[[mcu_0056-nokia-48x84-i2c-board]]
|small display board
|style="color:red"|incomplete
|style="color:red"|incomplete
|style="color:red"|incomplete
|not started yet
|-
|[[mcu_0057-lcd-i2c-eval-board]]
|LCD Development Board with I2C
|style="color:black"|40%
|style="color:black"|40%
|style="color:red"|incomplete
|check I2C lines, design headers, add texts
|-
|.
|RC Autopilot
|style="color:red"|incomplete
|style="color:red"|incomplete
|style="color:red"|incomplete
|core developed on Arduino Pro Mini, base board design exists only in breadboard
|-
|[[mcu_0058-ATtiny85-eval-board]]
|small ATtiny85 eval board
|style="color:red"|incomplete
|style="color:red"|incomplete
|style="color:red"|incomplete
|small eval board with work area, power regulator, DC socket, a switch and a LED
|-
|[[mcu_0059-ATtiny84-eval-board]]
|small ATtiny84 eval board
|style="color:black"|90%
|style="color:black"|80%
|style="color:red"|incomplete
|small eval board with work area, power regulator, DC socket, a switch and a LED
|-
|[[mcu_0060-Voltage-data-logger]]
|Voltage data logger
|style="color:red"|incomplete
|style="color:red"|incomplete
|style="color:red"|incomplete
|depends on wireless transmission (ir or xbee) and micro sdcard storage
|-
|[[mcu_0061-heart-rate-monitor]]
|Heart rate monitor
|style="color:red"|incomplete
|style="color:red"|incomplete
|style="color:red"|incomplete
|need to get hardware to work on test board first
|-
|[[Mcu 0062-LCD-48x84-RC-Enclosure-top-pcb]]
|48x84 Nokia LCD board
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0062-gerbers-v1.0.zip]]
|-
|[[0124-433]]
|PCB Dipole antenna for 433MHz
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0124-433 v1.0.zip]]
|-
|[[0124-868]]
|PCB Dipole antenna for 868MHz
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0124-868 v1.0.zip]]
|-
|[[0124-915]]
|PCB Dipole antenna for 915MHz
|style="color:green"|finished
|style="color:green"|finished
|style="color:green"|finished
|Gerbers: [[File:0124-915 v1.0.zip]]
|}
My first order was placed with BatchPCB. For me, this is a convenient and cheap way to obtain professional pcb's in low quantities. Feel free to drop me a line on alternative pcb manufacturers that can also do low-cost and low-quantity pcb's.
c458515d1304ebcc463401f50328c1cda3beb9e2
Pending PCB manufacturing
0
602
2382
2016-09-06T01:50:23Z
Admin
1
Admin moved page [[Pending PCB manufacturing]] to [[PCB designs]]
wikitext
text/x-wiki
#REDIRECT [[PCB designs]]
c6745978695753c32ae3573db0338714cef67344
File:Breadboard1-0-x.zip
6
604
2388
2016-09-16T12:27:41Z
Admin
1
breadboard file from ArduinoToBreadboard
wikitext
text/x-wiki
breadboard file from ArduinoToBreadboard
21ee27d1a53fc6b34a9a4734eed35191c46dce42
File:Pixie-qrp-cw-trx 01.jpg
6
606
2405
2403
2016-10-05T11:35:02Z
Admin
1
Admin uploaded a new version of "[[File:Pixie-qrp-cw-trx 01.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pixie-qrp-cw-trx 02.jpg
6
608
2406
2016-10-05T11:41:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:PIXIE(120322).PCB.jpg
6
609
2413
2016-10-08T11:31:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Pixie2
0
607
2416
2415
2016-10-11T02:27:27Z
Admin
1
wikitext
text/x-wiki
I bought this radio off eBay in 2015 and it's very low power and has some pros and cons:
[[File:Pixie-qrp-cw-trx 01.jpg]]
Pros:
* Crystal controlled
* Cheap, easy to build
* low power usage (standby current about 20mA @ 12V, 100mA on transmit)
* On-board LM386 audio amplifier (drives low impedance speaker or headphones)
Cons:
* Only capable of listening/transmitting on ONE frequency
* No sidetone when keying
* Loud DC-bumps (popping/clicking sound) when keying
* only CW, no AM or SSB
Some details:
The Pixie 2 is a tiny rig, with a standard two-transmittor transmitter. It's a Colpitts oscillator, left running and a keyed Power Amplifier.
There is no external mixer used to feed the audio amplifier. Instead, the mixing is done at the final amplifier itself with the resulting audio
taken off the emitter.
There is no Receiver Incremental Tuning (RIT).
* Power input: 9V - 12V (Q2, the S8050 gets hot with too much input voltage!)
* Power consumption: 10mA RX, 100mA TX (@ 9V)
* TX Power: 1.2W @ 12V, 0.8W @ 9V
* QSK (Full break-in) CW
Schematic:
[[File:Pixie-qrp-cw-trx 02.jpg]]
Unpopulated PCB:
[[File:PIXIE(120322).PCB.jpg]]
Some history about the Pixie transceiver.
http://www.gqrp.com/The_Sprat_Pixie_File.pdf
4946b3e40e5a6f8bd32b1e231c78fb2cf6292a72
File:Breadboard-1-6-x.zip
6
610
2417
2016-11-12T11:24:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IV-Curve 6V 35mA-PV-panel.jpg
6
611
2419
2016-11-19T00:36:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IV-Curve 6V 140mA-PV-panel.jpg
6
612
2421
2016-11-19T00:36:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IV-Curve 1.6V 18mA-PV-panel.jpg
6
613
2424
2016-11-19T02:27:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:IV-Curve 4V 250mA-PV-panel.jpg
6
614
2426
2016-11-19T02:28:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Solarpanels
0
535
2429
2428
2016-11-19T02:31:35Z
Admin
1
wikitext
text/x-wiki
These days a lot of small solar panels can be easily and cheaply acquired from various sources.
To find out which of these panels I could use for my projects I decided to hook them up to my [[Mcu_0084-voltage-datalogger|voltage-datalogger]] and see how they perform on a sunny day.
Here is an overview of the panels I tested:
[[File:4-small-solar-panels.png]]
On my testing day, around noon I ran my datalogger for about 15 minutes on each panel. The results are shown below:
[[File:Datalogger 4-small-solar-panels open-circuit-voltage.png]]
During testing the clouds were mostly gone, except when I was testing panel B. The outside temperature was around 27 degrees Celsius. I also put a temperature sensor underneath the panels and measured about 55 degrees C in the shade.
[[File:Solar-test-setup.jpg]]
===Solar Panel A===
* Dimensions: 2.5cm x 2.5cm
* Open-circuit voltage: 1.6V
* Short-circuit current: 18mA
[[File:IV-Curve 1.6V 18mA-PV-panel.jpg]]
These panels are commonly found in solar powered garden-lights. I was able to get some for AU$2 each and they contained a 100mAh NiMH battery as well as a small charging circuit based on the yX805 chip. The panels are covered with a glass top layer and have no circuit board. The copper terminals are printed on the bottom of the crystalline material so it's very delicate.
===Solar Panel B===
* Dimensions: 6cm x 6cm
* Open-circuit voltage: 6V
* Short-circuit current: 35mA
[[File:IV-Curve 6V 35mA-PV-panel.jpg]]
These panels are printed on a circuit board and are therefore easy to solder. The top layer is some kind of transparent epoxy. The voltage curve in the graph above shows some fluctuations due to clouds in front of the sun when testing.
===Solar Panel C===
* Dimensions: 12cm x 6cm
* Open-circuit voltage: 4V
* Short-circuit current: 250mA
[[File:IV-Curve 4V 250mA-PV-panel.jpg]]
These panels are printed on a circuit board and are therefore easy to solder. The top layer is some kind of transparent epoxy.
===Solar Panel D===
* Dimensions: 9.9cm x 6.9cm
* Open-circuit voltage: 5.5V
* Short-circuit current: 140mA
[[File:IV-Curve 6V 140mA-PV-panel.jpg]]
These panels are printed on a circuit board and are therefore easy to solder. The top layer is some kind of transparent epoxy.
611cbe25255aa4a6634bca17056aa897d3abb855
File:Forty-9er-topview.jpg
6
616
2432
2016-12-09T22:35:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:49erOrigMnl.pdf
6
617
2434
2016-12-09T22:44:19Z
Admin
1
NorCal QRP Club Forty-9er
wikitext
text/x-wiki
NorCal QRP Club Forty-9er
42ce6f452efd57a5185b2c21c1dfa0dcdee8a4ec
File:Forty-9er schematic.jpg
6
618
2436
2016-12-09T23:58:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Forty-9er pcb top.jpg
6
619
2438
2016-12-09T23:59:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Forty-9er pcb bottom.jpg
6
620
2439
2016-12-10T00:00:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BD139.jpg
6
621
2441
2016-12-10T00:04:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NEC-2SD882-datasheet.pdf
6
622
2444
2016-12-10T00:11:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Forty-9er
0
615
2447
2446
2016-12-10T00:27:40Z
Admin
1
wikitext
text/x-wiki
The forty-9er is an improved design over the Pixie2. It has two crystals, one for the rx and one for the tx frequency.
RX power consumption is around 23mA @ 12V
Output power is around 2 to 3 Watts.
[[File:Forty-9er-topview.jpg]]
[[File:Forty-9er pcb top.jpg]]
[[File:Forty-9er pcb bottom.jpg]]
[[File:Forty-9er schematic.jpg|200px|thumb|none|Forty-9er Schematic]]
Description of the original Norcal Forty 9er [[File:49erOrigMnl.pdf]]
The Final Power Amplifier that is shipped with this kit is the NEC D882 NPN Transistor.
datasheet: [[File:NEC-2SD882-datasheet.pdf]]
Apparently, the datasheet lists this part as suitable for a 3W audio amplifier but it has an Ft of 90MHz.
An initial check revealed that the power output was only 600mW so I decided to replace it with a BD139 which has an Ft of 190MHz. It also has the same footprint and pinout so it is a drop-in replacement for the D882.
[[File:BD139.jpg]]
After fitting this transistor the power output was about 1W.
701abf8428b292fa68931736c4bbf80db6b692b5
File:Compromise-impedances.jpg
6
625
2457
2016-12-14T04:10:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Why 50 Ohms
0
626
2458
2016-12-14T04:10:52Z
Admin
1
Created page with "The answer can be shown in the graph below. This was produced by two researchers, Lloyd Espenscheid and Herman Affel, working for Bell Labs in 1929. They were going to send R..."
wikitext
text/x-wiki
The answer can be shown in the graph below. This was produced by two researchers, Lloyd Espenscheid and Herman Affel, working for Bell Labs in 1929.
They were going to send RF signals (4 MHz) for hundred of miles carrying a thousand telephone calls. They needed a cable that would carry high voltage and high power. In the graph below, you can see the ideal rating for each. For high voltage, the perfect impedance is 60 ohms. For high power, the perfect impedance is 30 ohms.
This means, clearly, that there is NO perfect impedance to do both. What they ended up with was a compromise number, and that number was 50 ohms.
[[File:Compromise-impedances.jpg]]
56bac61749b3a884e98bba7a73aa6f8066e55e5c
File:Gamma-match.jpg
6
624
2468
2467
2016-12-14T10:48:07Z
Admin
1
Admin uploaded a new version of "[[File:Gamma-match.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Delta-match.jpg
6
627
2469
2016-12-14T10:51:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Hairpin-match.jpg
6
628
2471
2016-12-14T11:04:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Stub-match.jpg
6
629
2478
2016-12-14T11:12:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Omega-match.jpg
6
630
2480
2016-12-14T11:16:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Z-match.jpg
6
631
2483
2016-12-14T11:23:47Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:T-match.png
6
632
2485
2016-12-14T11:26:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:L-match.jpg
6
633
2487
2016-12-14T11:29:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pi-match.jpg
6
634
2489
2016-12-14T11:32:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:S-match.jpg
6
635
2491
2016-12-14T11:34:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Pawsey-stub.jpg
6
636
2493
2016-12-14T11:40:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Coax-balun.jpg
6
637
2495
2016-12-14T11:42:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Split-coax-balun.jpg
6
638
2497
2016-12-14T11:48:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Baluns
0
640
2539
2016-12-15T03:09:58Z
Admin
1
Created page with " For related information on the subject, see also our articles on [[common mode interference]] and [[impedance matching]]. ===Baluns=== The balun is a device (often a tra..."
wikitext
text/x-wiki
For related information on the subject, see also our articles on [[common mode interference]] and [[impedance matching]].
===Baluns===
The balun is a device (often a transformer) that can:
* match a balanced antenna (dipole) to an unbalanced feedline (coax)
* match an unbalanced antenna (quarter-wave vertical) to a balanced feedline
* electrically isolate the feedline
* choke common-mode currents (caused by unbalanced antennas)
Although a balun can quench common-mode currents, it doesn't necessarily transform impedances.
Tuned Stub
Folded Balun
[[File:Pawsey-stub.jpg|thumb|none|250px|Pawsey Stub]]
[[File:Coax-balun.jpg|thumb|none|250px|Coax balun]]
[[File:Split-coax-balun.jpg|thumb|none|250px|Split coax balun]]
715c5ee79425ec3804e4fb4176706cd4e49c60ff
File:Random-adc-values.png
6
641
2552
2016-12-15T21:45:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Last-15-rolling-avg.png
6
642
2553
2016-12-15T21:47:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Common mode interference
0
639
2562
2561
2016-12-15T23:58:23Z
Admin
1
wikitext
text/x-wiki
In transmitters and antenna systems, common mode interference needs to be properly addressed as they can be the source of all kinds of interference to their own or nearby electronics.
For related information on the subject, see also our article on [[impedance matching]] and [[baluns]].
===Why we don't want Common Mode currents===
* high voltage at radio can cause 'RF in the shack', 'hot' microphones, RF burns
* may cause RFI to nearby devices (distorted audio, upsetting cw keyers, fluorescent lamps flicker)
* RF over the feedline will also re-radiate and can interfere with nearby antenna elements (e.g. in a Yagi) and disturb the antenna's radiation pattern.
* A system that radiates rf from the feedline is also susceptible to receiving rf from other signal sources, causing additional noise in the system.
===Causes of Common-mode currents===
Common Mode Currents can be caused by:
* imbalanced antenna
* feed point imbalance to balance transition
* running the feedline through the antenna's near-field
* other nearby noise sources
* Coax shield attenuation
* Ground loops (improper grounding)
* domestic appliances fed by unshielded power cables
===What causes an antenna to not be balanced?===
* nearby trees and building structures
* difference in radiating element lengths
* differences in height above ground of the radiating elements
The imbalance can also occur in the feedline and may be caused by:
* feedline design (e.g. coax)
* distance of nearby buildings to one side of a twin-lead feedline
So in short:
{| class="wikitable"
|+Common Mode Currents
|-
|Cause
|Effect
|Symptoms
|-
|Imbalances in the form of:
nearby trees and buildings to an antenna,
different antenna element lengths,
difference in height above ground of antenna elements,
nearby metallic objects to feedline,
inherent feedline properties,
ground loops
|common mode currents
|RF in the Shack,
re-radiation of rf and can cause RFI,
interfere with antenna radiation pattern,
pick up unwanted rf and create additional noise
|}
===Minimising Common Mode currents===
If we cannot alter the amount of generated common mode currents we have a few methods that in varying degrees of success can minimise the effects of common mode currents:
* chokes
* isolation (1:1 baluns)
* grounding
* redistribute the effects over the transmission line conductors
221eba0b777cb575ce78214dd06c2437fed8acfd
File:Coax-closeup.jpg
6
643
2563
2016-12-16T00:17:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Twinlead-closeup.jpg
6
644
2564
2016-12-16T00:17:55Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Impedance matching
0
623
2571
2570
2016-12-16T03:14:44Z
Admin
1
wikitext
text/x-wiki
Most RF transmitters nowadays are designed to work with a 50 Ohms load impedance. (Read here: [[Why 50 Ohms]]? ) Many antennas however do not have a 50 Ohms input impedance, so the need for Matching arises.
For related information on the subject, see also our articles on [[common mode interference]] and [[baluns]].
===Why do we need/want impedance matching?===
* Maximum power transfer happens when the source (transmitter) impedance and the load (antenna) impedances are matched. If there is a feedline in between then the feedline needs to be matched as well.
* Impedance mismatches will cause equal-and-opposite (differential-mode) currents going back and forth in the feedline. This may damage the radio.
* Built-in protection circuits in radios prevent delivering maximum output power if a severe enough mismatch is detected (e.g. higher than SWR > 2:1).
===Voltage Standing Wave Ratio (VSWR, or just SWR)===
SWR is be caused by an impedance mismatch between source and load.
Common areas where the impedance might not match the source or the feedline:
* antenna feed point (e.g. dipole is 73 Ohms, quarter-wave vertical on ground is 36 Ohms)
* type of feedline (coax is usually 50 or 70 Ohms, twin-lead can be 300 or 450 Ohms)
* routing tracks over a circuit board (vias, corners, thick-to-thin transitions)
SWR is an indication of how much of the transmitted power to the antenna is reflected due to impedance mismatch and comes back to the radio. SWR is entirely contained inside coax or on the conductors or twinlead.
[[File:Coax-closeup.jpg|thumb|none|200px|Coax close up]]
[[File:Twinlead-closeup.jpg|thumb|none|200px|Twinlead close up]]
To give you an idea what the various SWR numbers actually mean in terms of reflected power.
{| class="wikitable"
|+VSWR and Reflected Power
|-
|VSWR
|Power Out
|Power Reflected
|-
|1:1
|100W
|0W
|-
|1.5:1
|100W
|3.9W
|-
|2:1
|100W
|11.1W
|-
|2.5:1
|100W
|18.4W
|-
|3:1
|100W
|25W
|-
|3.5:1
|100W
|31W
|-
|4:1
|100W
|36W
|}
===Why we don't want high SWR===
* cable losses could add up significantly and cause output signal attenuation
* high voltage at radio can cause 'RF in the shack', 'hot' microphones
* RFI to nearby devices due to over-stressing radio final power amplifiers and protection circuits
So in short:
{| class="wikitable"
|+High (Voltage) Standing Wave Ratio
|-
|Cause
|Effect
|Symptoms
|-
|Impedance mismatch due to:
inherent antenna design
feedline not matched to antenna or radio
antenna not matched to feedline
|SWR
|cable losses due to attenuation
rf in the shack
stressing power amplifier and protection circuits and cause RFI
less than maximum power transfer to the antenna
|}
===Various ways of matching feedline to the antenna===
[[File:Gamma-match.jpg|thumb|none|250px|Gamma Match]]
More info: http://myweb.tiscali.co.uk/g8hqp/radio/gammamatch.pdf
T-Match (basically a Gamma match on either side of the driven element)
[[File:Delta-match.jpg|thumb|none|250px|Delta Match]]
[[File:Hairpin-match.jpg|thumb|none|250px|Hairpin Match]]
[[File:Stub-match.jpg|thumb|none|250px|Stub Match]]
[[File:Omega-match.jpg|thumb|none|250px|Omega Match]]
The device that matches the radio to the feedline is often called an Antenna Tuner or ATU (Antenna Tuning Unit), but this name is slightly incorrect as it doesn't actually tune the antenna; it adds capacitance or inductance to whatever is connected to the Antenna port of the Tuner to cancel out any reactance.
If matching the feedline to the antenna is not done at the antenna feed point it is still possible to match the radio to the feedline. This is often done for practical reasons in that a tuning network can be situated close to the radio (sometimes even on the same circuit board) and is away from the harsher outside environment where the antenna is. The biggest drawback of course is that any mismatch between the feedline and the antenna is propagated all the way down to the radio until it reaches the antenna tuner. This is less of a problem with lower frequencies (e.g. < 100MHz), but at higher frequencies there may be significant attenuation of the signal simply due to the length of the feedline.
===Transmatch (Antenna Tuner) designs===
[[File:T-match.png|thumb|none|250px|T-Match]]
[[File:Z-match.jpg|thumb|none|250px|Z-Match]]
[[File:L-match.jpg|thumb|none|250px|L-Match]]
[[File:Pi-match.jpg|thumb|none|250px|Pi Match]]
[[File:S-match.jpg|thumb|none|250px|S-Match]]
Some myths dispelled:
* The length of feedline does not alter the SWR (apart from making it less due to losses in longer feedlines). Feedline length DOES affect impedance.
* Antenna Tuners do not need to be encased in metal enclosures as there are no harmonics or non-linear products generated
* SWR does not radiate off the feedline
* Common mode currents on the feedline can still occur in a 1:1 SWR antenna system
110f45c5b086dd1918adc0dc0695e5703747ca9d
File:MCP73832 open-drain.jpg
6
646
2576
2016-12-16T09:19:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73831 tri-state.jpg
6
647
2578
2016-12-16T09:20:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73833 status-pin.jpg
6
648
2581
2016-12-16T09:28:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Open-drain-output.jpg
6
649
2587
2584
2016-12-16T09:59:13Z
Admin
1
Admin uploaded a new version of "[[File:Open-drain-output.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73831 status-pin.jpg
6
651
2592
2016-12-16T10:29:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:MCP73832 status-pin.jpg
6
652
2593
2016-12-16T10:29:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Open-drain-output-with-external-pullup-and-led.jpg
6
653
2597
2016-12-16T10:55:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Open-drain-output-with-internal-pullup-and-led.jpg
6
654
2599
2016-12-16T10:57:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Scarlet-honeyeater.jpg
6
655
2609
2016-12-17T05:06:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blue-faced-honeyeater.jpg
6
657
2612
2016-12-17T05:11:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0118-PCB Versions 0.1 and 0.2.jpg
6
659
2618
2016-12-25T09:22:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:MsgBox
10
660
2625
2624
2016-12-29T10:42:34Z
Admin
1
wikitext
text/x-wiki
<table class="msgbox" border=1 bgcolor="#E1E1E1" style="width:20em; font-size:90%; text-align:left; margin:10px; border-spacing:5px 5px; border: 1px #c0c0c0 solid;">
<tr>
<td bgcolor="#E1E1E1" style="text-align:center;">Tip</td>
<td bgcolor="#E1E1E1" style="text-align:center;">{{{description}}}</td>
</tr>
</table>
71ef8ea1764aeaa81b0d199cd95fb32eb46dda94
Tristatelogic-vs-opendrain
0
645
2626
2623
2016-12-29T10:43:54Z
Admin
1
wikitext
text/x-wiki
The datasheet for the MCP73831/2 LiPo charge controllers shows that the chip can be ordered with the STATUS pin preconfigured as either Tri-State Logic or Open-Drain.
So what is the difference and why would you want one over the other?
===MCP73832 (Open Drain)===
Consider the following:
[[File:Open-drain-output.jpg]]
The dotted box is the charge controller and the (N-Channel) FET controls the STAT pin going to the outside world. As you can see the Drain pin of the FET is not connected to VCC. Therefore, the FET can only be in one of two states; when the Gate is ON, the Drain is pulled to Ground, when the Gate is OFF, the Drain is floating. The floating state becomes useful when we use an external pull-up resistor. This way when the Gate is OFF, the Drain is pulled up by the resistor to VCC.
If we want to add an LED to show the charge status with the open drain charge controller we need to have a look at the available signals for the MCP73832 from the datasheet:
--
Table 5-1 summarizes the state of the status output
during a charge cycle.
[[File:MCP73832 status-pin.jpg]]
--
As you can see the available signals are only:
* High impedance (High-Z) when the Gate is OFF (and Drain is floating)
* Low impedance (Low-Z) when the Gate is ON (and Drain is actively pulled to Ground)
If we were to place an LED to Ground in series with R1 like so:
[[File:Open-drain-output-with-external-pullup-and-led.jpg|thumb|none|300px|Led through External Pull-up Resistor]]
..the LED would turn on when the Gate is ON (Closing the path from Drain to Ground)
In this configuration, and according to the datasheet, the LED would turn on:
* When the Charge Controller is in battery pre-conditioning mode
* Charging the battery in constant-current mode
* topping up the battery in constant-voltage mode
When the battery is full, the 'Charge Complete' status turns the Gate OFF and the path to Ground as seen from the Drain is disconnected and the LED Cathode is floating at VCC, which effectively turns the LED off.
A little more on the pull-up resistor when we're talking about microcontrollers. Most microcontrollers have an internal Pull-up Resistor and can source (some) current to power external circuitry like a LED. The schematic will then look something like this:
[[File:Open-drain-output-with-internal-pullup-and-led.jpg|thumb|none|300px|Internal Pull-up Resistor]]
===MCP73831 (Tri-State Logic)===
Now let's have a look at the tri-state function of the STAT pin.
[[File:MCP73831 status-pin.jpg]]
3.3 Charge Status Output (STAT)
STAT is an output for connection to an LED for charge
status indication. Alternatively, a pull-up resistor can be
applied for interfacing to a host microcontroller.
STAT is a tri-state logic output on the MCP73831 and
an open-drain output on the MCP73832.
The charge charge status output can be used to illuminate 1, 2, or tri-color LEDs. Optionally, the charge status output can be used as an interface to a host microcontroller.
5.2.1 STATUS INDICATOR (STAT)
The charge status output of the MCP73831 has three
different states: High (H), Low (L), and High-
Impedance (High Z). The charge status output of the
MCP73832 is open-drain. It has two different states:
Low (L) and High-Impedance (High Z). The charge sta-
tus output can be used to illuminate one, two or tri-color
LEDs. Optionally, the charge status output can be used
as an interface to a host microcontroller.
{{MsgBox
| type = tip
| description = No proper images yet for the tri-state and open drain logic yet
}}
This is what Tri-State logic looks like:
[[File:MCP73831-tri-state.jpg|thumb|none|250px|Tri-State]]
And this is an Open Drain configuration:
[[File:MCP73832-open-drain.jpg|thumb|none|250px|Open Drain]]
Open Drain has two states, High-Z (high resistance) and Low-Z (low resistance).
To use a common anode tricolour LED (two LED's with their anodes connected, not bicolour):
* Anode was connected to the input power supply
* Green cathode connected to ground with a current limiting resistor.
* Red cathode to the STAT pin.
No chip power supply: LED off
Charging - yellow
Done - Green (But it will also light up green when no battery is present)
You could implement a 'red - charging, green - done' with same LED, but with an extra NPN transistor on the green cathode. So when the STAT is low, transistor is off, but pulls the red cathode low. When STAT is high, transistor on, green LED on, red off.
Sources:
* http://ww1.microchip.com/downloads/en/DeviceDoc/20001984g.pdf
* http://ww1.microchip.com/downloads/en/DeviceDoc/51596a.pdf
2d42c14d041f26c669653bac5738ecde2a2fc144
File:Fiddler-beetle.jpg
6
661
2627
2016-12-31T02:02:53Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Space-helmet-lights.jpg
6
662
2630
2017-01-02T10:23:11Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-pcb.jpg
6
663
2632
2017-01-10T21:20:46Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Ame dcp paddle.jpg
6
665
2635
2017-01-10T21:24:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126 Iambic Keyer gerbers.zip
6
667
2640
2017-01-10T21:41:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DipTrace Schematic - 0126 iambic keyer.png
6
669
2642
2017-01-10T21:45:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Wikipost:Current events
4
672
2652
2017-01-11T00:20:38Z
Admin
1
Created page with " Amateur Radio Contest calendar for 2017: [[2017_VK_Contest_Dates]]"
wikitext
text/x-wiki
Amateur Radio Contest calendar for 2017:
[[2017_VK_Contest_Dates]]
3acfda84a493cbe93013e652c9f6d6a566f38f84
File:0126-iambic-keyer-oshpark.jpg
6
666
2653
2637
2017-01-11T00:22:49Z
Admin
1
Admin uploaded a new version of "[[File:0126-iambic-keyer-oshpark.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126 iambic keyer.zip
6
670
2656
2655
2017-01-11T00:42:33Z
Admin
1
Admin uploaded a new version of "[[File:0126 iambic keyer.zip]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-pcb-built side.jpg
6
673
2664
2017-01-11T21:08:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Willie-wagtail.jpg
6
674
2669
2017-01-15T07:14:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Raspberry-pi-pinout.jpg
6
675
2672
2017-01-20T22:23:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
GPIO pin on the RPi to trigger PTT
0
444
2673
2671
2017-01-20T22:23:42Z
Admin
1
wikitext
text/x-wiki
When using the Raspberry Pi for Packet Radio or APRS it is essential to bring the radio into transmit mode before sending any packets. One hack that works with varying degrees of success is to use the radio's VOX (Voice Operated Switch) if it has one. The idea being that dummy packets that are sent before the actual data are used to trigger the vox and we then hope that the radio goes into transmit just in time before the actual data is sent. With vox sensitivity on the radio and TXDELAY settings in /etc/ax25/soundmodem we have some variables to play with but it remains a bit messy.
[[File:IC-207H.jpg]]
The preferred method is to key the radio using a dedicated PTT line. This is normally achieved by putting PTT to GND and the radio goes into transmit. This connection of PTT to GND is usually done inside a hand-held microphone by the operator.
For automated operation such as Packet Radio and APRS where packets are sent at the control of the computer an alternative method is required.
With Serially (RS-232) connected TNC's it is possible to use the RTS line on the serial port as a PTT trigger. This line will go from HIGH to LOW when a packet is being transmitted over the serial port and will go from LOW to HIGH when the packet has finished transmitting over the serial port. We can use this line to trigger the PTT of a radio.
[[File:Raspberry-pi-pinout.jpg]]
Before we can access this RTS signal on the Raspberry Pi we need to tell it to slightly shuffle the GPIO pinout a bit. The GPIO header on the RPi has several 'mappings' which tell which pin what to do (see http://elinux.org/RPi_BCM2835_GPIOs). We can change the function of GPIO pins by changing the mapping for those pins. The chip controlling the GPIO on the RPi knows of three pre-defined mappings. Although the mapping schemes are fixed, there is one mapping which brings out RTS of the on-board serial port of the RPi to a GPIO pin. For the (older) Rev2 Model A and B RPi's this GPIO pin is on the P5 header, for the A+ and B+ models the GPIO pin is on the main header.
Unfortunately the Raspbian software does not come with a program to easily modify the GPIO pin mapping. For that we need to make use of a third-party piece of software from Github user rewolff called bw_rpi_tools.
Full source code and instructions can be found here: https://github.com/rewolff/bw_rpi_tools
if one does not already have git support installed, that must be done upfront:
# might be required
sudo apt-get update
# get git support
sudo apt-get install git-core
# …follow the prompt
To use the IO pins we first need to “free” the serial port for our usage. The default configuration of the linux image uses the built in serial port to dump kernel messages and as a way to log into your raspi.
From /boot/cmdline.txt we need to remove the following options:
<pre>
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
</pre>
We also need to stop the system to spin up a terminal on the serial port. For this we put the following statement in /etc/inittab into comment (add # in front of the line):
<pre>
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200
</pre>
OK, the serial port is ours, but we still need a tool to switch the GPIO assignment.
In the Makefile change the line:
cp $(BINARIES) $(SCRIPTS) $(BINDIR)
to
cp $(BINARIES) $(BINDIR)
before the make install type:
make
followed by the command shown above:
sudo make install
If you now look into the (default) install directory /usr/local/bin you will find:
a) the file: gpio_list
b) a soft link: gpio_setfunc -> /usr/local/bin/gpio_list
and some more soft links.
<pre>
# as pi user,
cd /home/pi
mkdir rpi-tools
cd rpi-tools/
# if you have not yet installed git, this must be done upfront
# see comments section below on how to do this
git clone https://github.com/rewolff/bw_rpi_tools.git
cd bw_rpi_tools/gpio
# depending on the version or status of the tools you might need to fix the Makefile
# see comments section below
make
sudo make install
</pre>
I found that if you goto /rpi-tools/bw_rpi_tools/bw_tool and do a make there you can then get the sudo make install to partially work enough to get the gpio_list working -No luck yet for the setfunc
Blatantly copied from:
https://dl8scu.wordpress.com/2013/02/10/are-you-lucky-no-usb-to-serial-converter-needed/
Once the software is installed it is simply a matter of setting the GPIO mapping for the desired pins at boot-up of the system. I prefer to place the following lines inside /etc/rc.local
<pre>
# change GPIO pins 30 and 31 to mapping ALT3
# See: http://elinux.org/RPi_BCM2835_GPIOs
# See: https://github.com/rewolff/bw_rpi_tools
/usr/local/bin/gpio_setfunc 30 ALT3
/usr/local/bin/gpio_setfunc 31 ALT3
</pre>
Below are two schematics that show how to interface to different handheld radios to the RPi with the GPIO PTT method. Please note that many radios will have different pinouts so it is important to check the correct way of keying PTT before you try anything out.
===Baofeng UV-5R to RPi with GPIO PTT===
This image shows:
* Where to find the RTS pin on the GPIO headers for the various RPi Models
* The pinout of the plugs for the Baofeng UV-5R handheld transceiver
* A schematic for inverting the logic signal of the RTS pin so it can be used to switch PTT to GND using a P-Channel FET
[[File:UV5R-PTT-pinout.jpg|200px|thumb|none|Connection Schematic for UV-5R]]
===Icom IC-P2AT to RPi with GPIO PTT===
This image shows:
* Where to find the RTS pin on the GPIO headers for the various RPi Models
* The pinout of the plugs for the Icom IC-P2AT handheld transceiver
* A schematic for inverting the logic signal of the RTS pin so it can be used to switch PTT to GND using a P-Channel FET
[[File:P2AT-PTT-pinout.jpg|200px|thumb|none|Connection Schematic for IC-P2AT]]
1b536b3094c7e806a69d968d0d4a72889da18e1e
File:Sleeping-bats.jpeg
6
677
2676
2017-01-27T00:26:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
ATMega328 WDT sleep
0
676
2677
2675
2017-01-27T00:26:21Z
Admin
1
wikitext
text/x-wiki
For my wireless sensor nodes I have been using the ATmega328P-AU (TQFP) microcontrollers with great success. However, I wanted to make sure that I can get the power consumption down to a minimum whilst in sleep mode as these units will run off a 100mAh LiPo battery. Needless to say, the runtime of the device greatly depends on how low we can get the power consumption when the unit is in sleep mode.
[[File:Sleeping-bats.jpeg]]
The ATMega328 chip is the same as used in the Arduino Uno and should be compatible with the Duemilanove as only the form factor differs (TQFP vs DIP).
With the sketch loaded into the mcu I was able to get the power consumption down to around 5uA.
Brown-out detection is disabled, but if you need that for your project, expect the consumption to go up to about 23uA.
<pre>
/*
ATMega328 (same as in Arduino Duemilanove/Uno)
Watchdog-timer sleep sketch
Current in sleep mode: ~5uA
*/
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/wdt.h>
#define LED 13
// the setup function runs once when you press reset or power the board
void setup() {
// initialize LED pin as an output.
pinMode(LED, OUTPUT);
digitalWrite(LED,LOW);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
//enter sleep mode
system_sleep();
}
//initialize watchdog
void setup_watchdog(int ii)
{
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
uint8_t bb;
if (ii > 9 ) ii=9;
bb=ii & 7;
if (ii > 7) bb|= (1<<5);
bb|= (1<<WDCE);
MCUSR &= ~(1<<WDRF);
// start timed sequence
WDTCSR |= (1<<WDCE) | (1<<WDE);
// set new watchdog timeout value
WDTCSR = bb;
WDTCSR |= _BV(WDIE);
}
// system wakes up when watchdog is timed out
void system_sleep()
{
ADCSRA = 0; // switch Analog to Digitalconverter OFF
setup_watchdog(9); // approximately 8 seconds sleep
/* The 5 different modes are:
SLEEP_MODE_IDLE -the least power savings
SLEEP_MODE_ADC
SLEEP_MODE_PWR_SAVE
SLEEP_MODE_STANDBY
SLEEP_MODE_PWR_DOWN -the most power savings
*/
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
noInterrupts (); // timed sequence follows
sleep_enable();
// turn off brown-out enable in software
MCUCR = bit (BODS) | bit (BODSE); // turn on brown-out enable select
MCUCR = bit (BODS); // this must be done within 4 clock cycles of above
interrupts (); // guarantees next instruction executed
sleep_cpu (); // sleep within 3 clock cycles of above
sleep_disable(); // System continues execution here when watchdog timed out
ADCSRA = 1; // switch Analog to Digitalconverter ON
}
// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect)
{
// nothing here
}
</pre>
965cb77aba77ad09a9b0b7f09347cb81d2d53bfc
2017 VK Contest Dates
0
671
2682
2651
2017-02-02T00:23:00Z
Admin
1
wikitext
text/x-wiki
2017 VK Contest Dates (Phone)
<pre>
Date Name Start End (UTC) Bands
------------------------------------------------------------------------
18-19 Mar John Moyle 0100 - 0059 (24hrs) All bands
6 May Harry Angel 1000 - 1146 (106mins) 80m
15 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m, 80m, 40m
12-13 Aug Remembrance Day 0300 - 0300 (24hrs) All bands
19-20 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
7-8 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
1bc0c63c6872f489ff6b24b20376e8763fa01c82
File:5W-QRP-T-match-tuner.jpg
6
679
2686
2017-02-10T22:54:00Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:QRP 1-30MHz Manual Days Antenna Tuner Tune DIY.jpeg
6
680
2688
2017-02-10T22:57:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Qrp
0
605
2691
2683
2017-02-10T23:00:06Z
Admin
1
wikitext
text/x-wiki
Some links to low power radios and related equipment
===Transceivers (CW)===
[[pixie2]]
[[forty-9er]]
===Antenna Tuner===
[[5W T-match Antenna Tuner]] (aka the 'QRP 1-30MHz Manual Days Antenna Tuner' found on eBay)
318a245d0fdf65e4b71d6791310c7aa0af7c766f
File:5W-QRP-T-match-tuner schematic.jpg
6
681
2692
2017-02-10T23:03:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:5W-QRP-T-match-tuner PCB bottom.jpg
6
683
2701
2017-02-11T00:01:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:5W-QRP-T-match-tuner PCB top.jpg
6
682
2705
2699
2017-02-11T00:45:11Z
Admin
1
Admin uploaded a new version of "[[File:5W-QRP-T-match-tuner PCB top.jpg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:5W-QRP-T-match-tuner inside.jpg
6
684
2723
2017-02-16T23:07:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Sacred-kingfisher.jpg
6
685
2730
2017-02-20T10:21:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Swamp-rat.jpg
6
686
2733
2017-02-20T10:25:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Nature in and around our house
0
327
2735
2734
2017-02-20T10:26:47Z
Admin
1
wikitext
text/x-wiki
We don't live in a wildlife park by any stretch of the imagination but we do see a fair few animals around our house. Here is what we have seen so far:
==Mammals==
[[File:Common brushtail possum.jpg|200px|thumb|none|Common Brushtail Possum]]
[[File:Swamp-rat.jpg|200px|thumb|none|Swamp Rat]]
==Birds==
[[File:Australian Magpie.jpg|200px|thumb|none|Australian Magpie]]
[[File:Noisy Miner.jpg|200px|thumb|none|Noisy Miner]]
[[File:Australian Pelican.jpg|200px|thumb|none|Australian Pelican]]
[[File:Laughing Kookaburra.jpg|200px|thumb|none|Laughing Kookaburra]]
[[File:Blackfacedcuckooshrike.jpg|200px|thumb|none|Black Faced Cuckoo Shrike]]
[[File:Grey-Butcherbird.jpg|200px|thumb|none|Grey Butcherbird]]
[[File:Rainbow lorrikeet.jpg|200px|thumb|none|Rainbow Lorrikeet]]
[[File:Eastern Rosella.jpg|200px|thumb|none|Eastern Rosella]]
[[File:Scaly Breasted Lorrikeet.jpg|200px|thumb|none|Scaly Breasted Lorrikeet]]
[[File:Noisy friarbird.jpg|200px|thumb|none|Noisy Friarbird]]
[[File:Crested pigeon.jpg|200px|thumb|none|Crested Pigeon]]
[[File:Magpie lark.jpg|200px|thumb|none|Magpie Lark (Peewee)]]
[[File:Silver-eye.jpg|200px|thumb|none|Silver Eye]]
[[File:Asian koel.jpg|200px|thumb|none|Asian Koel]]
[[File:Pied Currawong.jpg|200px|thumb|none|Pied Currawong]]
[[File:Indian Myna.jpg|200px|thumb|none|Indian Myna]]
[[File:Australian wood duck.jpg|200px|thumb|none|Australian Wood Duck]]
[[File:Australian Raven.jpg|200px|thumb|none|Australian Raven]]
[[File:Green figbird 03341.jpg|200px|thumb|none|Australasian Figbird]]
[[File:Frogmouth.jpg|200px|thumb|none|Tawny Frogmouth]]
[[File:Yellow-tailed black cockatoo.jpg|200px|thumb|none|Yellow-Tailed Black Cockatoo]]
[[File:Scarlet-honeyeater.jpg|200px|thumb|none|Scarlet Honeyeater]]
[[File:Blue-faced-honeyeater.jpg|200px|thumb|none|Blue Faced Honeyeater]]
[[File:Willie-wagtail.jpg|200px|thumb|none|Willie Wagtail]]
[[File:Sacred-kingfisher.jpg|200px|thumb|none|Sacred Kingfisher]]
==Reptiles==
[[File:Blind snake.jpg|200px|thumb|none|Blind Snake]]
[[File:White-grub.jpg|200px|thumb|none|Grub (Beatle Larva)]]
[[File:Blue-tongue Lizard.jpg|200px|thumb|none|Blue Tongue Lizard]]
[[File:Spotted Ctenotus Skink.jpg|200px|thumb|none|Spotted Ctenotus Skink]]
==Oligochaeta==
[[File:Earthworm.jpg|200px|thumb|none|Earthworm]]
==Amphibia==
[[File:Green tree frog.jpg|200px|thumb|none|Green Tree Frog]]
==Insects==
[[File:St Andrews Cross Spider.jpg|200px|thumb|none|St Andrew's Cross Spider]]
[[File:Redback spider.jpg|200px|thumb|none|Redback Spider]]
[[File:Huntsman spider.jpg|200px|thumb|none|Huntsman Spider]]
[[File:Mud Nest Wasp.jpg|200px|thumb|none|Mud Nest Wasp]]
[[File:Blue Banded Bee.jpg|200px|thumb|none|Blue Banded Bee]]
[[File:Common Crow Butterfly.jpg|200px|thumb|none|Common Crow Butterfly]]
[[File:Monarch butterfly.jpg|200px|thumb|none|Monarch Butterfly]]
[[File:Blue Triangle Butterfly.jpg|200px|thumb|none|Blue Triangle Butterfly]]
[[File:Common blue butterfly.jpg|200px|thumb|none|Common Blue Butterfly]]
[[File:Cabbage white butterfly.jpg|200px|thumb|none|Cabbage White Butterfly]]
[[File:Imperial White Butterfly.jpg|200px|thumb|none|Imperial White (Jezebel) Butterfly]]
[[File:Australian Cockroach.jpg|200px|thumb|none|Australian Cockroach]]
Praying Mantis (no image yet)
[[File:Giant Green Grasshopper.jpg|200px|thumb|none|Giant Green Grasshopper]]
[[File:Christmas Beetle.jpg|200px|thumb|none|Christmas Beetle]]
[[File:Redeye cicada.jpg|200px|thumb|none|Redeye Cycada]]
[[File:Floury Baker cicada.jpg|200px|thumb|none|Floury Baker Cycada]]
[[File:Ladybird-Harmonia conformis.jpg|200px|thumb|none|Harmonia Conformis (Ladybird)]]
[[File:Ladybird-Coccinella transversalis.jpg|200px|thumb|none|Coccinella Transversalis (Ladybird)]]
[[File:Australian sheep blowfly.jpg|200px|thumb|none|Australian Sheep Blowfly]]
[[File:Hoverfly.jpg|200px|thumb|none|Hover Fly]]
[[File:Fiddler-beetle.jpg|200px|thumb|none|Fiddler Beetle]]
==Trees==
[[File:Tea Tree.jpg|200px|thumb|none|Tea Tree]]
[[File:Callistemon.jpg|200px|thumb|none|Callistemon (Bottlebrush)]]
[[File:Melaleuca.jpg|200px|thumb|none|Melaleuca (Paperbark)]]
[[File:Lilly pilly.jpg|200px|thumb|none|Syzygium Smithii (Lilly Pilly)]]
[[File:Nerium oleander.jpg|200px|thumb|none|Nerium Oleander]]
==Plants==
(nothing here yet)
==Grasses==
(nothing here yet)
cc079eb60e4d8b914e868845b911fb1d0e3c35cb
File:Atmel-logo1.png
6
687
2738
2017-03-07T22:04:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Icon-pdf.gif
6
688
2740
2017-03-07T22:06:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Atmel-logo2.png
6
689
2745
2017-03-07T22:12:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Microchip-logo1.png
6
690
2746
2017-03-07T22:12:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Silly-image-enhancement.jpg
6
691
2759
2017-05-23T12:04:10Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
5W T-match Antenna Tuner
0
678
2762
2761
2017-05-24T02:07:19Z
Admin
1
wikitext
text/x-wiki
eBay lists this product as the "QRP 1-30MHz Manual Days Antenna Tuner" (手動天調套件). The 'Days' is probably due to an incorrect translation for DIY (do-it-yourself). In 2017 I purchased this kit off eBay for just under AU$16 and free delivery.
Specifications:
* Frequency range: 1 - 30MHz
* Impedance matching range: 40 - 300 Ohms
* Maximum RF Power: 5W
* Network type: T-Network
* Built-in SWR indicator LED (Dan Tayloe)
* Insertion loss: ?? dB
* Input impedance: 50 Ohms
[[File:5W-QRP-T-match-tuner.jpg|300px]] [[File:5W-QRP-T-match-tuner inside.jpg|328px]]
Completed kit build
[[File:QRP 1-30MHz Manual Days Antenna Tuner Tune DIY.jpeg|400px]]
All the parts inside the kit
I got this kit with about 2.76m of enameled copper wire for the two toroids. For the bigger 12-tapped toroid windings I used 1.71m. Definitely more than enough was provided by the kit.
Toroid type and dimensions:
===T106-2===
* outer diameter: 26.9mm
* inner diameter: 14.5mm
* thickness: 11.1mm
* material: Carbonyl
* colour: red with one side clear (grey)
* characteristics: 250 KHz - 10 MHz
===FT37-43===
* outer diameter: 9.5mm
* inner diameter: 4.75mm
* thickness: 3.3mm
* material: Type 43
* color: unpainted (grey)
* characteristics: Wideband Transformers up to 50 MHz
Schematic:
[[File:5W-QRP-T-match-tuner schematic.jpg|450px]]
The silkscreen for the small PCB has an error in the labels for T1. The schematic (which is correct) shows that the primary (IN) winding should have 2 turns and the secondary (OUT) winding should have 5 turns. The PCB however has been shipped with these labels swapped. For clarity I have added the correct labels for T1 on the picture below.
[[File:5W-QRP-T-match-tuner PCB top.jpg|none|thumb|300px|PCB top view (updated T1 labels)]]
[[File:5W-QRP-T-match-tuner PCB bottom.jpg|none|thumb|300px|PCB bottom view]]
===NOTES===
* There are several issues with this kit that may not be obvious at first glance. First of all, the kit does not come with a schematic. You'll either have to use the schematics on this page or find the appropriate schematic off Google elsewhere.
* some have reported that the screws that come with the variable capacitors may be too long and can cut into the dielectric material inside the variable capacitor housing.
* perhaps on earlier revisions the capacitor on the pcb was shown to be across the secondary winding, this is incorrect. My board had 'V2.0' printed on it and I could not see a fault in the tracks for the capacitor (check the schematic, it is correct and shows the capacitor going to ground after the diode).
* The windings on the big toroid may be a squeeze-fit to go on the 12-position selector switch. Just make sure to keep a longer lead (about 10cm) on the 10-windings side to connect it to the variable capacitors. The 12 positions all connect to tapped wires (except the beginning-10-turn-lead and the centre pin on the rotary switch is connected with an insulated wire to ground. This wire can either go through the toroid or alongside the switch body.
* when pressing the knob on the 12-position switch, also use a block or rod that provides pressure support from the back of the switch. When I had the rotary switch already mounted on the enclosure and attempted to push the knob on, the pressure was enough to undo all four clamps and separated the top and bottom half of the switch. Although not disastrous, I noticed that when I put the switch halves back together, the resistance to move from one position to the next was very low.
* the self-adhesive stencils are not exactly in the middle. Especially the top one was off by several mm's so that when I wanted to fit one of the tuning capacitors I noticed that one of the internal screw posts was in the way.
===Tuning best practice===
There are usually an infinite number of combinations that allows a T-Network tuner to match impedances. However, there are some combinations of L and C that allow for better power transfer (and minimise losses) than others. Ideally we want to use the lowest amount of inductance required as the windings on the toroid are more lossy than the capacitors. Here is a recommended tuning best practice for a tapped-inductor T-network tuner:
* Set the transmitter-side input Capacitor (Cin) and the antenna-side output Capacitor both to mid-scale.
* Select an inductance switch position and rotate Cout to detect a slight SWR dip.
* Set the inductance switch to another position if you didn't detect a dip. Only use Cout to check for a dip.
* When you find a dip, adjust Cin for minimum SWR.
* Move Cout slightly in one direction and use Cin to find minium SWR again.
* If the SWR is lower than it was, continue to move Cout in the same direction until lowest SWR has been reached.
* If the SWR is higher than it was, move Cout in the other direction and repeat above steps until lowest SWR has been reached.
* If an SWR dip can be found on two inductance settings, choose the lower inductance to get the larger output capacitance.
(From 'Getting the most out of your T-Network antenna tuner' by Andrew S. Griffith, W4ULD, QST Jan 1995)
8e0072525c9cadf88e9c9665c527123ee2281376
File:NOAA18 gqrx 20170607 stereo.jpg
6
692
2763
2017-06-07T23:03:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Sdr
0
379
2764
1561
2017-06-07T23:46:10Z
Admin
1
wikitext
text/x-wiki
SDR (Software Defined Radio)
on Raspberry Pi
* [[rpi-websdr]]
* [[rpi-rtl-sdr]]
* [[rtl-sdr receive examples]]
8570bf1cee2087ffe17a11e9f9c493849cf6c0f4
File:Gqrx-noaa-18.jpg
6
694
2767
2017-06-08T00:36:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Rtl-sdr receive examples
0
693
2769
2768
2017-06-08T00:41:41Z
Admin
1
wikitext
text/x-wiki
[[File:NOAA18 gqrx 20170607 stereo.jpg|thumb|none|350px|NOAA 18 image received with an RTL820 SDR receiver]]
[[File:Gqrx-noaa-18.jpg|thumb|none|350px|NOAA 18 APT data as shown on GQRX]]
Resources:
* http://www.rtl-sdr.com/ RTL SDR (Software Defined Radios)
* https://en.wikipedia.org/wiki/Automatic_picture_transmission APT (Automatic Picture Transfer) protocol
* https://en.wikipedia.org/wiki/NOAA-18 Page dedicated to the NOAA 18 Satellite
* http://www.wxtoimg.com/ Software to decode APT and WEFAX signals from weather satellites
f53e4ace0be7ab116d03d462d0ec26a327bdf441
File:0126-iambic-keyer enclosure-back.jpg
6
695
2773
2017-06-10T00:01:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer enclosure-front.jpg
6
696
2774
2017-06-10T00:02:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-inside-enclosure.jpg
6
697
2775
2017-06-10T00:03:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-pcb v0.2 bottom.jpg
6
698
2776
2017-06-10T00:04:27Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg
6
699
2777
2017-06-10T00:05:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0126-iambic-keyer-pcb v0.2 top.jpg
6
700
2778
2017-06-10T00:06:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:ATmega328 datasheet complete.pdf
6
701
2788
2017-06-11T12:02:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-centre-loaded-quarter-wave-vertical.jpeg
6
703
2807
2017-07-03T10:45:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-j-pole-pcb.jpeg
6
704
2808
2017-07-03T10:45:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-short-helical.jpeg
6
705
2809
2017-07-03T10:46:04Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-sleeve-dipole.jpeg
6
706
2810
2017-07-03T10:46:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-captcha-dipole.jpg
6
707
2814
2017-07-03T10:59:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-moteino-monopole.jpg
6
708
2816
2017-07-03T11:05:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:433-PL259-short-helical.jpeg
6
709
2829
2818
2017-07-03T11:36:55Z
Admin
1
Admin uploaded a new version of "[[File:433-PL259-short-helical.jpeg]]"
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0118-wireless-sensor-board
0
603
2842
2841
2017-07-13T21:59:06Z
Admin
1
wikitext
text/x-wiki
This page will get more content over time but for now it just holds some points of interest and some instructions on how to bootstrap the board with an off-the-shelf microcontroller (fuses set for 1MHz, internal oscillator).
The latest model of the 0118 wireless sensor board PCB has two connectors for programming the chip. The first is the 6-pin ICSP (In-Circuit Serial Programming) and the second is the FTDI-based programming connector.
Before we can use Arduino to program the ATMega328p we have to upload a program called a bootloader. Once this in place we can use the FTDI programmer.
So here we go:
==Functionality and Component Selection==
Call it Design Specification, call it wish list.. This is what I want to use these devices for at some stage:
Remote:
* PIR sensor
* Temperature sensor
* Voltage Measurement
* Easy interfacing with LCD
* small
* battery powered
* option to attach solar panel for re-charging
* range of at least 1km LOS
The first design took care of many of these points and I settled on incorporating the following components on one PCB:
* ATMega328P-AU
* MCP1703 250mA 3.3V linear voltage regulator
* MCP79410-I/SN Realtime Clock
* MCP73831T-2ACI/OT LiPo Charge Controller
* RFM12B 433MHz 1mW Transceiver
Current BOM (PCB version 0.3):
<pre>
R1 33k (PV charge resistor, 47k is good too, just less current)
R2 10k mcu RESET pullup
R3,R4 4k7 (pullup resistors for I2C)
R5 1k (LED series resistor)
R6 10k (pullup for RTC interrupt
R7,R13 10k (voltage divider for external voltage sampling)
R9 10k (fet gate current limiting resistor for reverse-voltage protection)
R10 4k7 (DS18B20 parasitic power resistor)
R11,R12 10k (fet gate bleed-off resistors)
R14 10k (radio_on fet gate resistor)
C1,C11,C4 1uF
C2 4.7uF
C3,C5,C6,C9,C10 0.1uF
C7,C8 7pF (10pF ok too, Crystal loading caps)
XT1 32.769kHz (RTC Crystal)
T1,T3,T6 NDS352AP Fet to control power to the radio module, battery reverse-polarity protection and ext voltage sampling circuit
T5 BSS138 N-Ch FET to control external voltage sampling circuit
D1 1N4001 DO-214AC diode to drop voltage to radio module
D2 LED (on D9, not D13)
U1 ATMega328P-AU (32-pin TQFP, preloaded with 'breadboard' bootloader)
U2 MCP73831T Li-Po 4.2V charge controller SOT23-5
U3 DS18B20 OneWire temperature sensor (-125 to 125degC)
U4 RFM12B (1mW), RFM69CW (17mW) or RFM69HCW (100mW) Hope RF transceiver module
U5 SMA (edge pcb) connector [RS-Online 526-5785]
U6 MCP79410 Realtime Clock SOIC
</pre>
With regards to the LiPo charge controller Status pin: [[tristatelogic-vs-opendrain]]
==Uploading the bootloader in a brand new ATMega238p chip==
(pretty much following this: https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard )
===Step 1: add wires to facilitate the Arduino to be an ISP programmer===
For the programming we will use an already functioning Arduino board as the programmer.
Hook up power plus 4 programming wires (D10, D11, D12 and D13) to the new chip.
NOTE: the RESET line is directly connected; no 100nF caps or 10k resistors anywhere.
===Step 2: set up the Arduino IDE and the Breadboard files===
We will use the Arduino IDE version 1.0.6 (the latest in the 1.0.x series) to do the programming.
Download from here: https://www.arduino.cc/en/Main/OldSoftwareReleases#1.0.x
While you're there, also grab the 'breadboard' files from here: https://www.arduino.cc/en/uploads/Tutorial/Breadboard1-0-x.zip
or locally here: [[File:Breadboard1-0-x.zip]]
(for 1.6.x version: download from here: https://www.arduino.cc/en/uploads/Tutorial/breadboard-1-6-x.zip or grab locally here: [[File:Breadboard-1-6-x.zip]] )
Set up Arduino by simply unzipping it in a directory. There you'll find the 'arduino' binary. Just run it and see if all looks good. From the menu go File - Preferences and note the path used for the 'sketchbook location' (e.g. /home/<user>/sketchbook). Close the Arduino IDE when done.
Make sure there's a 'hardware' folder in the 'sketchbook' folder and unzip the Breadboard1-0.x.zip in there.
Now start the Arduino IDE again.
From the menu check 'Tools - Board' and in the list, probably at the bottom, you should have a board called 'ATMega328 on a breadboard (8 MHz internal clock)'.
So far so good.
===Step 3: turn the working Arduino into a ICSP Programmer===
The Arduino IDE caters for this and has the sketch already available in the menu.
Open the sketch at: 'File - Examples - ArduinoISP'
Now program this sketch as you normally would (to the already working Arduino)
(I assume you have already set the correct serial port)
===Step 4: change the programming method===
Now that the Arduino is ready to program a new chip we need to make a change in the IDE that we're not using the USB cable to program the already working Arduino (otherwise we'll be overwriting the ArduinoISP programming sketch), but instead use the Arduino as a programmer to program something else. The Arduino sketch will effectively act as a tunnel and forward the code over the 4 programming wires and load up the new chip.
From the menu, select: 'Tools - Programmer - Arduino as ISP'
Whatever we program now will be coming out over the 4 programming wires.
===Step 5: select the target board we wish to program===
We're almost ready to program, but before we do we must tell the IDE what type of chip is connected to the 4 programming wires. This information is stored in a 'boards' file. When we unzipped the 'Breadboard1-0.x.zip' file in the 'hardware' directory we presented the Arduino IDE with a new board configuration specifically for this purpose. The boards file we unzipped is only to be used for ATMega328 chips and it will use fuse settings that will make it use the internal oscillator and run at 8 MHz.
From the menu, select: 'Tools - Board - ATMega328 on a breadboard (8 MHz internal clock)'
===Step 6: upload the bootloader===
Everything is now in place to attempt the uploading of the bootloader code into the new chip using an existing, working Arduino, as the ISP Programmer.
Confirm that on the status bar the Arduino IDE shows the Breadboard name and the port we'll use. All good? Let's go..
From the menu, select: 'Tools - Burn Bootloader'
The lights on the working Arduino board will flash for about 30 seconds and then the IDE should show the message 'Done burning bootloader'.
Congratulations!
You may now move the newly programmed ATMega328 into your own project and use the FTDI method of programming it.
The RESET line is one item I would like to address:
When you have uploaded the bootloader into the new chip and wish to program it using the FTDI method, you should add the following circuitry to the chip's RESET line in order to guarantee successful programming every time you use the Arduino IDE and the FTDI method.
<pre>
100nF
FTDI Vcc --+-----||-----+---- RESET
| |
+----/\/\/---+
10k
</pre>
NOTES:
* to program a new bootloader into an ATMega328 using another Arduino with the ArduinoISP sketch it is important that the RESET line is directly connected. Once the bootloader has been loaded into the new micro and the FTDI programming method is used (no longer connected with the original Arduino board) then a 100nF capacitor is required. Without this capacitor the FTDI programming fails.
==PCB versions==
[[File:0118-PCB Versions 0.1 and 0.2.jpg|none|thumb|250px|PCB versions 0.1 and 0.2 side by side]]
===Version 0.1, initial board (June 2016)===
In this version:
* Apart from bugs below, most things work
Bugs:
* GND trace missing from PV to three header pins
* T1 (RADIO_ON FET) swapped Drain and Source
* A2 and A3 swapped (Silkscreen A2 = real A3, Silkscreen A3 = real A2)
Suggested improvements:
* move top silkscreen text further away around the 3-pin connector (under I2C connector) and around the 6-pin (with A6 and A7 pins) connector.
* bigger fonts underneath power connectors (PV, LiPo)
* move SMA connector slightly inwards into pcb?
* re-use pin D9 to use it as an extra IO pin
* move things around to better fit an external connector (DB9/DB15?)
* bypass track pads for RESET capacitor for initial ISP programming
* add white area to write version numbers
* shorten RTC pads
* bigger SOT-23 pads?
* check signal trace from RFM to SMA for 50R impedance
* add a pushbutton?
* reposition holes slightly for better fit in enclosure
===Version 0.2 (Oct 2016)===
In this version:
* increased ground plane under radio module
* 50R impedance signal tracks for antenna
* shortened board a little for better fit with SMA connector
* repositioned holes for better fit in enclosure
* moved pin label silkscreens a bit further so they can be read better
* shortened pads for RTC module
* removed ICSP header
* added pushbutton
* added pin D9 through-hole
* added white area next to SMA connector to write version numbers
* added solder-jumper-pad for measuring power after MCP1703
* added GND track from PV to 3 header pins
Bugs:
* A2/A3 still persists?
* T1 (RADIO_ON FET) swapped Drain and Source
===Version 0.3 (June 2017)===
In this version:
* added extra white silkscreen pad for notes
* fixed controlling switched power to the radio
* disconnected Aref to Vcc so we can use the internal 1.1V voltage regulator
* swapped pinout for A2 and A3 (now correct: A1, A2, A3)
* ran some low-power code and was able to get the consumption from a 4.1V 100mAh LiPo down to around 3uA. This is with the MCP79410 Realtime Clock, I2C 10k pullup resistors + MCP73831T LiPo charge controller.
As it turns out, the MCP1703 LDO linear voltage regulator has some issues. Google transient response and PSRR for details, but what it basically comes down to is that when the 1703 needs to suddenly cater for a bigger current draw, it drops the voltage for a few us before it can recover from the sudden change. On the scope I saw that when I turned on the radio (drawing about 20mA) the voltage dipped from 3.3V to about 2.4V for about 8us. There may be other things happening as well, but the result was that the atmega328 went into reset every time the radio was switched on. Because I am aiming for low power consumption and want to switch of the radio when the mcu is in sleep mode, this issue needs to be rectified. For a while I started looking at LDOs that have a better transient response, but I found I was getting into more expensive parts and perhaps harder to get as well. Don't get me wrong, the 1703 is a great low-power device when the transient response is not an issue, but for me it was just not the right choice.
I then started looking at the possibility of removing the LDO altogether. I ran some checks and it turned out that the RTC, DS18B20 and the ATmega328 were more than capable of running off 4.2V (maximum voltage when a 1S LiPo is charged). The only part that could handle only up to 3.6V was the RFM radio module. After doing some tests I experimented with just putting in a single 1N4001 diode to drop the power by 0.7V. This is now my current solution to the problem. I checked whether I needed one or two diodes in series and came up with the following chart:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>LiPo Voltage</b>
|style="background-color:#f2f2f2;"|<b>Current draw</b>
|style="background-color:#f2f2f2;"|<b>Diodes</b>
|style="background-color:#f2f2f2;"|<b>Radio Voltage</b>
|style="background-color:#f2f2f2;"|<b>Voltage drop</b>
|-
|4.2
|2mA
|1x
|3.58
|0.62
|-
|4.2
|2mA
|2x
|2.96
|0.62
|-
|4.2
|100mA
|1x
|3.49
|0.71
|-
|4.2
|100mA
|2x
|2.78
|0.71
|-
|4.2
|200mA
|1x
|3.42
|0.78
|-
|4.2
|200mA
|2x
|2.64
|0.78
|-
|3.6
|2mA
|1x
|2.98
|0.62
|-
|3.6
|2mA
|2x
|2.36
|0.62
|-
|3.6
|100mA
|1x
|2.89
|0.71
|-
|3.6
|100mA
|2x
|2.18
|0.71
|-
|3.6
|200mA
|1x
|2.82
|0.78
|-
|3.6
|200mA
|2x
|2.04
|0.78
|-
|3.5
|2mA
|1x
|2.88
|0.62
|-
|3.5
|2mA
|2x
|2.26
|0.62
|-
|3.5
|100mA
|1x
|2.79
|0.71
|-
|3.5
|100mA
|2x
|2.08
|0.71
|-
|3.5
|200mA
|1x
|2.72
|0.78
|-
|3.5
|200mA
|2x
|1.94
|0.78
|}
This shows that with 1 series diode the voltage is lowered enough to safely power the radio module even when the battery is fully charged. I did further tests by lowering the input voltage even further and I could theoretically have the battery voltage drop to 3.3V and the radio would still be able to function properly. Of course, you would not want to run a LiPo battery that low, but it's nice to know where the edge of operation conditions are.
Losing the LDO made several improvements for this project:
* less current drain on the battery as the LDO is not taking up any power anymore
* more space on the circuit board as the LDO and its surrounding caps are gone (although I do now have to add the diode, DO-214 footprint)
* made the design somewhat simpler and cheaper
* improves power stability as the LDO no longer causes a dip whenever a big(ish) load is connected
* longer battery life as the LDO needs to overcome the dropout voltage (according to the datasheet a 3.3V 1703 is out of spec when fed with less than 4V on the input and supplying the maximum 250mA output). Not that I want to, but I can run my LiPo now down to 3.3V and still get the radio to work.
* no longer a restriction of 250mA current draw
External connector pinout
Using a DSUB9 connector:
<pre>
GPS 1W ExtV BZ free
| | | | |
| | | | |
1 o o o o o 5
6 o o o o 9
| | | |
GND PV |---|
| |
Batt |
pcb
</pre>
MCP7383 LiPo Charge Controller - charge current and Rprog resistor values
<pre>
500.0 mA 2 k
454.5 mA 2.2 k
416.7 mA 2.4 k
370.4 mA 2.7 k
333.3 mA 3 k
303.0 mA 3.3 k
277.8 mA 3.6 k
256.4 mA 3.9 k
232.6 mA 4.3 k
212.8 mA 4.7 k
196.1 mA 5.1 k
178.6 mA 5.6 k
161.3 mA 6.2 k
147.1 mA 6.8 k
133.3 mA 7.5 k
122.0 mA 8.2 k
109.9 mA 9.1 k
100.0 mA 10 k
90.9 mA 11 k
83.3 mA 12 k
76.9 mA 13 k
66.7 mA 15 k
62.5 mA 16 k
55.6 mA 18 k
50.0 mA 20 k
45.5 mA 22 k
41.7 mA 24 k
37.0 mA 27 k
33.3 mA 30 k
30.3 mA 33 k
27.8 mA 36 k
25.6 mA 39 k
23.3 mA 43 k
21.3 mA 47 k
19.6 mA 51 k
17.9 mA 56 k
16.1 mA 62 k
14.7 mA 68 k
</pre>
===Version 0.4 (July 2017)===
In this version:
* removed the MCP1703 LDO linear voltage regulator. Everything is now powered straight off the battery
* 50 Ohm Z for antenna stripline and connector
* on-board P+N-Fet controlled voltage divider for external Voltage measurements + added an extra pad to conveniently connect an external voltage source for measuring.
* disconnected Vref from Vcc so that we can use the internal 1.1V reference for measuring battery voltage
* Added pads for an on-board Dallas DS18B20 'OneWire' temperature sensor
* Added an inline 1N4001 diode to the power tail to the radio module. This drops down the voltage enough to operate the module within specs.
* added a reverse-polarity protection P-Fet across the battery terminals
* moved the Crystal loading caps a bit further so that soldering doesn't overflow in the Crystal pads
Bugs:
* in V0.3 the Vcc line from the FTDI connector to the nearby Vcc track got deleted. It's now back again.
2332528979bcb42b9b1a3a83240960e6876ef26a
File:Turnigy evolution.jpg
6
711
2846
2017-08-12T05:27:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:DJI-Phantom quad.png
6
712
2849
2017-08-12T05:43:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Turnigy-evolution-settings-for-heli x v6.1.jpg
6
713
2851
2017-08-13T11:16:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Heli-x 3D-airport.jpg
6
714
2852
2017-08-13T11:17:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Rc-controller
0
710
2854
2853
2017-08-13T11:18:50Z
Admin
1
wikitext
text/x-wiki
In 2017 I decided to get familiar with Quadcopters, aka 'quads', aka 'Drones'.
the transmitter I bought was a 'model 2' (throttle on the left) 2.4GHz Turnigy Evolution.
[[File:Turnigy evolution.jpg]]
It has a micro-USB port and can be used as a 'game controller' in FPV Quad Simulation software.
At this time of writing there are several free options for FPV Simulation/Training:
* DRL (Windows only)
* Heli-X (Windows and Linux)
After downloading Heli-X version 6.1, I unzipped it and ran the software in KDE 5 under Debian Stretch (v9). It seemed to start up properly but it didn't recognise the transmitter. It turned out I had to load the following packages to add joystick support to my system:
<code>
apt-get install joystick jstest-gtk
</code>
After that it saw the controller and I could use the Heli-X software on Linux.
In the Heli-X software, there are varous models available. Mostly helicopters, but there is one quad: DJI Phantom
[[File:DJI-Phantom quad.png]]
Update the stick settings:
[[File:Turnigy-evolution-settings-for-heli x v6.1.jpg]]
Select a 3D airport, set camera to FPV mode and enjoy:
[[File:Heli-x 3D-airport.jpg]]
dce5af61a841263f8a77dfcd3f7bcae933dc447d
File:Range-test-antennas 2017.jpg
6
715
2865
2017-08-14T22:30:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Range-test-base-station 2017.jpg
6
716
2866
2017-08-14T22:31:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Range-test-mobile-unit 2017.jpg
6
717
2867
2017-08-14T22:32:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Low-cost antenna shootout 70cm
0
702
2869
2868
2017-08-14T22:34:15Z
Admin
1
wikitext
text/x-wiki
These days, many low-cost antennas for the 70cm ISM band can be obtained from online sellers though eBay and Amazon. I was curious to see how well they performed in a variety of environments. I was also interested to see how well my own design, the 'Captcha' PCB dipole, would stack up against these commercially available antennas.
Here, we put several models to the test.
The contestants are:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Radiation Pattern</b>
|style="background-color:#f2f2f2;"|<b>Gain (specified)</b>
|style="background-color:#f2f2f2;"|<b>Price</b>
|-
|[[File:433-centre-loaded-quarter-wave-vertical.jpeg|none|thumb|250px|centre-loaded quarter wave vertical]]
|Omnidirectional
|3dBi
|AU$7.67
|-
|[[File:433-j-pole-pcb.jpeg|none|thumb|250px|J-Pole on a PCB]]
|Omnidirectional
|?
|AU$1.52
|-
|[[File:433-short-helical.jpeg|none|thumb|250px|short helical quarter wave]]
|Omnidirectional
|2-3dBi
|AU$1.20
|-
|[[File:433-sleeve-dipole.jpeg|none|thumb|250px|sleeve dipole]]
|Omnidirectional
|6dBi
|AU$3.59
|-
|[[File:433-captcha-dipole.jpg|none|thumb|250px|captcha pcb dipole]]
|Omnidirectional
|?
|US$9.01
|-
|[[File:433-moteino-monopole.jpg|none|thumb|250px|quarter wave vertical 'monopole' 150mm wire antenna]]
|Omnidirectional
|?dBi
|(free)
|-
|[[File:433-PL259-short-helical.jpeg|none|thumb|250px|short helical with PL259 connector]]
|Omnidirectional
|2.5dBi
|AU$14.09
|}
How the range was determined
I tested these antennas on low power at 2.5uW (-26dBm). For range testing I wrote two sketches; one for a stationary 'base' unit, and one for the mobile unit that I took with me whilst walking away. The mobile unit is equipped with a LED and a piezo buzzer and sends out a packet every 2 seconds. When the base unit receives a packet, it re-sends it at full power (100mW, 20dBm) back to the mobile unit. When the mobile unit receives the re-sent ack packet a short beep is sent to a piezo transducer. That tells me that the base station can still receive the packets. I know that I've reached the range limit when I stop hearing confirmation beeps. For this test I did not rely on GPS as the distances are relatively short and GPS would probably introduce a significant measurement error of several metres. Instead, I just walked it out and counted my steps. This test is all about the relative range between the various antennas, NOT the real range when using radios at maximum power.
[[File:Range-test-antennas 2017.jpg|none|thumb|250px|The Candidates]]
Terrain
[[File:Range-test-base-station 2017.jpg|none|thumb|250px|The Base Station and terrain]]
I tested in a small park surrounded by trees and residential buildings, a level field, no immediate buildings nearby, dry soil ground.
The distances shown below were obtained by attenuating the signal down to -26dBm using a 30dB SMA attenuator. This was done purely to limit the range to well within the size of a small park where I did the testing.
[[File:Range-test-mobile-unit 2017.jpg|none|thumb|250px|The Mobile Unit with a 30dB attenuator]]
The results:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Distance</b>
|style="background-color:#f2f2f2;"|<b>Rank</b>
|-
|centre-loaded quarter wave vertical
|50m
|4
|-
|J-Pole on a PCB
|21m
|6
|-
|short helical quarter wave
|58m
|2
|-
|sleeve dipole
|55m
|3
|-
|captcha pcb dipole
|75m
|1
|-
|quarter wave vertical 16cm wire antenna
|31m
|5
|-
|short helical with PL259 connector
|N/A
|N/A
|}
59aa4ae4c8093a9114c43cfbf29995057188bd80
File:Mw-images.png
6
718
2871
2017-10-02T22:42:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Data-blur.jpg
6
720
2882
2017-10-19T21:31:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Demo-map-image-gnuplot.jpg
6
721
2885
2017-10-19T21:35:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Demo-gnuplot-gps-map.jpg
6
722
2888
2017-10-19T21:39:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Gnuplot
0
719
2890
2889
2017-10-19T21:59:28Z
Admin
1
wikitext
text/x-wiki
Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms.
I have been using Gnuplot for some of my antenna-range measurements using a GPS module and a microcontroller.
The way I use it on Linux, there are four files required to create a new plot:
* data file
[[File:Data-blur.jpg]]
This is data in CSV (comma separated values) and the column numbers need to match what the Gnuplot script expects. A common format would be to have whatever you're measuring (e.g. signal strength, or voltage) in the first column, gps latitude and longitude in the second and third columns, maybe elevation in the fourth column, and gps timestamps (usually in UTC format) in the fifth column. But once you have closer look in the gps.gnuplot.txt script file you should be able to change this around. The columns in the script file are referred to as $1, $2, $3, etc..
* map image
[[File:Demo-map-image-gnuplot.jpg]]
A map in .png format of the area that covers the range where GPS measurements were made. Although not strictly required for generic Gnuplot use, I used a bash script as a pre-processor to feed the coordinates as read from the map image's filename. This way no script files need to be edited, only the map image filename. The filename needs to contain the top-left and bottom-right coordinates in a specific order.
* plot-coverage-map.sh
This is a Linux bash shell script that will run some checks to make sure that the input files exist and that the coordinates are found in the filename. It also allows for adjusting the position of the data on the map if the coordinates don't exactly align. The script will scan the map image to get the dimensions and pass it on to gnuplot. The code for this file is shown below.
* gps.gnuplot.txt
The script that contains all the functions to combine the data and the map and produce the resulting plot image. It uses various variables that are fed from the bash script so that this file needs very little editing to make plots for different input files. The code for this file is shown below.
NOTE: you may need to swap the latmin/latmax or lonmin/lonmax values if you're in the northern hemisphere or west of Greenwich.
Example final image with the data plotted, legend, title and axis labels.
[[File:Demo-gnuplot-gps-map.jpg]]
Since the data file and the map image are dependent on your preferences, I have only listed here the contents of the bash script and the gnuplot script.
===plot-coverage-map.sh===
<pre>
#!/bin/sh
GNUPLOT=/usr/bin/gnuplot
PLOTFILE=gps.gnuplot.txt
# update these if the map coordinates don't exactly match the data.
# values are in 100,000th arc decimals and can go negative
ADJUST_LAT=0
ADJUST_LON=0
# range of data values.
VALUES_MIN=10
VALUES_MAX=1024
OUTFILE="measurements-plotted.png"
# -- shouldn't have to edit anything else below in this script --
if test $# -lt 2
then
echo "Syntax: $0 <mapfile_latmax,lonmax_latmin,lonmin.png> <datafile>"
echo
exit 1
fi
if ! test -f $1
then
echo "File not found: $1"
exit 1
fi
if ! test -f $2
then
echo "File not found: $2"
exit 1
fi
# echo fetch coordinates from map file
LATMAX=`echo "$1" | awk -F _ '{print $2}' | awk -F , '{print $1}'`
if test -z $LATMAX
then
echo "unable to get map Max Latitude, please check filename format"
exit 1
fi
LONMAX=`echo "$1" | awk -F _ '{print $2}' | awk -F , '{print $2}'`
if test -z $LONMAX
then
echo "unable to get map Max Longitude, please check filename format"
exit 1
fi
LATMIN=`echo "$1" | awk -F _ '{print $3}' | awk -F , '{print $1}'`
if test -z $LATMIN
then
echo "unable to get map Min Latitude, please check filename format"
exit 1
fi
LONMIN=`echo "$1" | awk -F _ '{print $3}' | awk -F , '{print $2}' | awk -F . '{print $1"."$2}'`
if test -z $LONMIN
then
echo "unable to get map Min Longitude, please check filename format"
exit 1
fi
echo "Latmax: $LATMAX Lonmax: $LONMAX"
echo "Latmin: $LATMIN Lonmin: $LONMIN"
if test $ADJUST_LAT -ne 0
then
echo "Adjusting Latitude by $ADJUST_LAT"
LATMAX=`echo "scale=6;$LATMAX + ($ADJUST_LAT/1000000)" | bc`
LATMIN=`echo "scale=6;$LATMIN + ($ADJUST_LAT/1000000)" | bc`
fi
if test $ADJUST_LON -ne 0
then
echo "Adjusting Longitude by $ADJUST_LON"
LONMAX=`echo "scale=6;$LONMAX + ($ADJUST_LON/1000000)" | bc`
LONMIN=`echo "scale=6;$LONMIN + ($ADJUST_LON/1000000)" | bc`
fi
# get map file dimensions
IMG_WIDTH=`file "$1" | awk -F "PNG image data, " '{print $2}' | awk '{print $1}'`
if test -z $IMG_WIDTH
then
echo "unable to get image width, please check output from 'file' command"
exit 1
fi
IMG_HEIGHT=`file "$1" | awk -F "PNG image data, " '{print $2}' | awk '{print $3}' | awk -F , '{print $1}'`
if test -z $IMG_HEIGHT
then
echo "unable to get image height, please check output from 'file' command"
exit 1
fi
echo "dimensions: $IMG_WIDTH x $IMG_HEIGHT"
echo "create graph.."
if $GNUPLOT -e "width=$IMG_WIDTH" \
-e "height=$IMG_HEIGHT" \
-e "latmax=$LATMAX" \
-e "lonmax=$LONMAX" \
-e "latmin=$LATMIN" \
-e "lonmin=$LONMIN" \
-e "values_min=$VALUES_MIN" \
-e "values_max=$VALUES_MAX" \
-e "MAP_FILE='$1'" \
-e "DATA_FILE='$2'" \
-e "OUT_FILE='$OUTFILE'" \
$PLOTFILE
then
OK=1
else
# some error occurred, keep the screen paused for a while longer
sleep 2
fi
echo "Done"
</pre>
The second file is the gnuplot script file that does the actual plotting of the data on the background image:
===gps.gnuplot.txt===
<pre>
#!/usr/bin/gnuplot
reset
set key off
set term png size width,height
# Data is comma delimited
set datafile separator ","
set output OUT_FILE
set pm3d;
set pm3d map
# initially, disable the colorbox so it isn't generated with images and data plots
unset colorbox
# vertical ticks on the colorbox
set cbtics
set multiplot
set lmargin at screen 0.1
set rmargin at screen 0.85
set bmargin at screen 0.1
set tmargin at screen 0.9
set title "Enter a useful title here "
# -- define the data point colors on the map --
# option #1 - hand-pick two Hue values and let gnplot map the values to it
#h1 = 20/360.0
#h2 = 250/360.0
#set palette model HSV functions (1-gray)*(h2-h1)+h1,1,0.98
# option #2 - simple two-color linear gradient
#set palette model RGB defined ( 0 'red', 1 'blue' )
# option #3 - skewed towards higher values
set palette model RGB defined ( 0 'yellow', 600 'blue', 800 'green', 1024 'red' )
# -- plot the background map --
unset xtics
unset ytics
plot MAP_FILE binary filetype=png with rgbimage notitle
# -- plot the data on the map --
# west east
set xrange [lonmax:lonmin]
# south north
set yrange [latmin:latmax]
set xtics .01
set ytics .01
set xlabel "Longitude"
set ylabel "Latitude"
plot DATA_FILE using 3:2:1 notitle with points lc palette
# -- plot the color box --
set cbrange [values_min:values_max]
set cblabel "Signal Strength (0-1024)" offset 0.0,0.0
set zrange [0:1]
unset xlabel
unset ylabel
unset title
unset xtics
unset ytics
set colorbox vertical user origin 0.87,0.1 size 0.02,0.5
splot '++' u ($2):($3):(cos($2*$3)):($1) with pm3d
unset multiplot
</pre>
For the background map I just use google maps and do a print-screen of an area. I then right-click on the map to get the coordinates and put those for the top-left and bottom-right corners of the image into the filename.
0f669453d0eb0c14bf3ffb0150d591aeae4e3646
File:TE menu 01.jpg
6
724
2903
2017-10-22T06:21:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TE menu 02.jpg
6
725
2904
2017-10-22T06:22:53Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TE menu 03.jpg
6
726
2906
2017-10-22T06:25:11Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TE menu 04.jpg
6
727
2907
2017-10-22T06:26:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TE menu 05.jpg
6
728
2911
2017-10-22T06:31:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:TE menu 06.jpg
6
729
2912
2017-10-22T06:34:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bf 01-esc.png
6
730
2916
2017-10-22T07:17:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bf 02-failsafe.png
6
731
2917
2017-10-22T07:18:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bf 03-throttle1000.png
6
732
2918
2017-10-22T07:19:08Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Bf 04-throttle900.png
6
733
2920
2017-10-22T07:20:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Failsafe on turnigy evolution
0
723
2921
2919
2017-10-22T07:23:39Z
Admin
1
wikitext
text/x-wiki
I wrote this page to properly get RC Receiver Failsafe working on my quadcopter.
===What is Failsafe?===
Failsafe (in the world of Remote Controlled Planes and Quadopters) is the term used to describe techniques to prevent a device (e.g. the plane/copter or the transmitter) from damaging itself or its environment. Two common failsafe implementations are:
* Receiver Failsafe
To prevent a plane from flying away when the RC transmitter signal is lost (e.g. when it goes out of range or when the transmitter batteries have depleted).
There is also the possibility that the RC receiver (on the quadcopter) has somehow lost the communications link between it and the flight controller. This could be due to a broken cable, a connector that slowly vibrated out of its socket, or maybe the receiver is stuck in a code loop. Even when the transmitter is still talking to the receiver, the received signals are not being sent to the flight controller anymore.
In both these scenarios (transmitter fail or comms between FC and radio are not working) we can instruct the flight controller to take action. In most cases we want actions to minimise any potential damage to the quad or its environment. The flightcontroller can do fancy things such as;
- wait with taking action for short time to make sure the lost comms wasn't a brief glitch
- set the flight mode into Angle or Horizon mode to level the quad
- gradually take the throttle down
- turn the motors off completely after 5 seconds
- turn on a beeper and/or LEDs so the quad can be easily located
* Transmitter Failsafe
To prevent the situation where the transmitter doesn't have enough battery power to safely bring back or land a plane. Modern RC Receiver modules are also sending back telemetry to the Transmitter. Usually this is RSSI (received signal strength indicator) and Vbatt (the voltage of the plane's battery). In the latter case it is possible to set up a failsafe for the plane's battery and when triggered, will sound an audible alarm on the transmitter whenever the plane's battery has reached a certain minimum voltage.
On this page I mainly focus on Receiver failsafe when the link with the Transmitter is lost.
Modern RC receivers often have failsafe features built in. This will allow certain values to be communicated to the flight controller whenever the link with the transmitter has been lost. With my Turnigy Evolution I configure these failsafe settings in radio's menu system and then store them into the receiver module when I bind with it. Binding usually only needs to be done once; both the radio and the receiver will remember their settings when powered off.
Below, we demonstrate the default behaviour when no failsafes are set, why just setting failsafe isn't enough, and lastly, the correct way to get the flight controller to detect Receiver Failsafe from a lost transmitter signal.
Transmitter: Turnigy Evolution
Receiver: Turnigy iA6C
Flight controller: Seriously Pro F3
Step 1 - Reset Endpoints and Failsafes and demonstrate the problem.
In the transmitter settings, set:
* all endpoints to 100% (low) and 100% (high)
* Subtrim all to 0%
* Failsafe for all channels to OFF
Then do an RX-bind to set these values in the receiver
In Betaflight:
* Configuration: ESC Motor features: set Minimum Throttle to 1035 and Maximum Throttle to 2000
[[File:Bf 01-esc.png]]
* Failsafe: Valid pulse range settings: minimum length: 885, maximum length:2115
[[File:Bf 02-failsafe.png]]
* safe and reboot fc in betaflight
First test:
- with the throttle at the minimum position, betaflight will read 1000
- turn off the transmitter
- betaflight will STILL show throttle at 1000.
[[File:Bf 03-throttle1000.png]]
Second test:
- turn the transmitter back on
- arm the quad (remember, no props!)
- raise the throttle lightly (you may need to hold the quad in your hand as otherwise the motors can spin out of control)
- turn off the transmitter
- the motors will continue to run, failsafe does not kick in.
Although this is default behaviour, it will not allow detection of a lost transmitter signal to the flight controller and could potentially mean your quad will fly out of control if the signal is lost.
Step 2 - Set up failsafe on the transmitter and bind the receiver
In the failsafe menu, set the value for channel 3 to -100%. Notice how you cannot get the indicator bar any lower and into the left pocket.
picture of setting failsafe to channel 3 (throttle) at -100%
[[File:TE menu 01.jpg]]
picture of failsafe channel settings list
[[File:TE menu 02.jpg]]
Bind with receiver
betaflight will show only 1000 as the minimum, still not good.
[[File:Bf 03-throttle1000.png]]
Don't worry if you are no longer able to arm the quad, we'll get to this at the end.
Step 3 - set endpoints
set Channel three minimum value endpoint to (minus) 120% (the maximum value I could set)
picture of setting ch3 minimum endpoint to -120%
[[File:TE menu 03.jpg]]
picture of endpoints channel settings list
[[File:TE menu 04.jpg]]
picture of betaflight now showing 900
[[File:Bf 04-throttle900.png]]
re-bind with receiver
test 1
- turn transmitter off
- betaflight throttle jumps up from 900 to 1000 (still not good)
[[File:Bf 03-throttle1000.png]]
Don't worry if you are no longer able to arm the quad, we'll get to this at the end.
step 4 - re-set endpoints
Enter '''failsafe''' menu for ch3. Notice how the indicator bar has now moved into the left-most pocket.
Initially it will show -100%, but when you move the stick, it will go further down to -120%.
picture of the endpoint showing the original -100%
[[File:TE menu 05.jpg]]
picture of the endpoint showing the new -120% value after briefly moving the throttle stick up and back down again.
[[File:TE menu 06.jpg]]
Press 'setup' to set the new value.
Betaflight shows 900 with transmitter on
[[File:Bf 04-throttle900.png]]
turning transmitter off, leaves value at 900 (almost there)
- now enter '''endpoints''' menu and set back to 100%
xxxxxx picture missing
- betaflight will show minimum value with transmitter on at 1000
[[File:Bf 03-throttle1000.png]]
test
- raise the throttle somewhere just above 1000
xxxxxx picture missing
- turning transmitter off
- betaflight will now show 900 (that's it!)
[[File:Bf 04-throttle900.png]]
step 5 - update valid ranges
- failsafe settings: set minimum length above the 900 (or whatever minimum value you had) but below 1000.
xxxxxx picture missing
- usually somewhere around 980 is fine.
- save in betaflight and reboot flightcontroller
test
- arm quad (should work now)
- receiver page in betaflight should show 1000 for throttle when at minimum
[[File:Bf 03-throttle1000.png]]
- raise throttle lightly (no props!! hold quad)
- turn off transmitter
- failsafe kicks in, cuts motors and does whatever is configured as failsafe actions
- betaflight should show throttle at the setting we set in step 5
xxxxxx picture missing
Do not bind the receiver again, as this will reset the endpoints!!!
ed7abfb0db220e3f3719c9663df4786b72ab7c51
File:Micro-minimosd.jpeg
6
735
2925
2017-12-21T03:54:17Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
OSD
0
736
2927
2926
2017-12-21T03:56:01Z
Admin
1
wikitext
text/x-wiki
===Micro MinimOSD===
[[File:Micro-minimosd.jpeg]]
* working voltage: 2S - 4S
2fa7cb6648441c79454c789274352ff4cb1502f3
File:Boscam-RC832.png
6
737
2928
2017-12-21T03:58:48Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Boscam-RC832-cable-pinout.png
6
739
2932
2017-12-21T04:09:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Boscam--RC832 pcb-top.jpg
6
740
2934
2017-12-21T04:12:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Eachine-EV100-DVR.jpg
6
741
2936
2017-12-21T04:16:32Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Eachine-EV100-DVR-pinout.jpg
6
743
2938
2017-12-21T04:27:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
DVR
0
742
2939
2937
2017-12-21T04:27:58Z
Admin
1
wikitext
text/x-wiki
Eachine EV100 DVR
[[File:Eachine-EV100-DVR.jpg]]
[[File:Eachine-EV100-DVR-pinout.jpg]]
ce470325ae6112f2b6357ae6d7f316f58caf15a1
File:Boscam-RC832-AV-pinout.jpg
6
744
2940
2017-12-21T04:31:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Video receivers
0
738
2941
2935
2017-12-21T04:32:18Z
Admin
1
wikitext
text/x-wiki
Boscam RC832
[[File:Boscam-RC832.png]]
[[File:Boscam--RC832 pcb-top.jpg]]
Description:
* Brand Name: Eachine
* Item Name: RC832 receiver
* Antenna Gain: 2db
* Antenna Impedance: 50Ω
* Video Impedance: 75Ω
* Video Format: NTSC/PAL auto
* Power Input: 12V
* Working Current: 200mA max
* Dimension: 80x 65 x15mm
* Weight: about 85g
* Connector: receiver module side RP-SMA jack, antenna RP-SMA plug
Features:
* 48 channels choice to get the best transmitting quality
* Compatible with A,B,E and F frequency bands
* Smaller size with lighter weight
* 48 CH compatible to all FPV 5.8g transmitter.
* Super small 200mA current for 600mW wireless transmitter power.
* 600mW transmitter power assure 5KM distance in open area, 5-8 KM is available if work with the bigger gain antenna.
[[File:Boscam-RC832-cable-pinout.png]]
[[File:Boscam-RC832-AV-pinout.jpg]]
3018625db4c83c7d6eb096e5c22fab04959fdfcc
File:Beerotor-BVone-AV-pinout.jpg
6
745
2942
2017-12-21T04:36:07Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Beerotor-BVone-goggles.jpg
6
746
2943
2017-12-21T04:38:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Beerotor-BVone BR05V01 pcb-top.jpg
6
748
2945
2017-12-21T04:43:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Beerotor-BVone BR05V01 pcb-bottom.jpg
6
749
2946
2017-12-21T04:44:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Beerotor-BVone BR05V01 top components.jpg
6
750
2949
2017-12-21T04:50:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Beerotor-BVone BR05V01 bottom components.jpg
6
751
2950
2017-12-21T04:51:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Goggles
0
747
2952
2951
2017-12-21T04:58:28Z
Admin
1
wikitext
text/x-wiki
Beerotor BVone
[[File:Beerotor-BVone-goggles.jpg]]
[[File:Beerotor-BVone-AV-pinout.jpg]]
Top view:
[[File:Beerotor-BVone BR05V01 pcb-top.jpg|300px|thumb|none|PCB top view]]
[[File:Beerotor-BVone BR05V01 top components.jpg|300px|thumb|none|PCB top components]]
Bottom view:
[[File:Beerotor-BVone BR05V01 pcb-bottom.jpg|300px|thumb|none|PCB bottom view]]
[[File:Beerotor-BVone BR05V01 bottom components.jpg|300px|thumb|none|PCB bottom components]]
* AV receiver modules are probably the RX5808
* APA2068 is a 2.6 Watt DC volume control and stereo bridged audio amplifier
460d1cf88a8dfd447ef499c31ce2691a345731f8
Solar PV Calculator
0
752
2954
2017-12-28T20:50:04Z
Admin
1
Created page with " https://docs.google.com/spreadsheets/d/1b3u9-lkZjNPdynLhgegvivqpMMoflNTdp94ZSKe2AH4/edit?usp=sharing"
wikitext
text/x-wiki
https://docs.google.com/spreadsheets/d/1b3u9-lkZjNPdynLhgegvivqpMMoflNTdp94ZSKe2AH4/edit?usp=sharing
8c3ff00bad611a00cf61d0b257c78902f2b84bc9
Datasheets
0
14
2955
2789
2018-04-11T03:07:58Z
Admin
1
wikitext
text/x-wiki
A datasheet, data sheet, or spec sheet is a document summarizing the performance and other technical characteristics of a product,
machine, component (e.g. an electronic component), material, a subsystem (e.g. a power supply) or software in sufficient detail to be used
by a design engineer to integrate the component into a system. Typically, a datasheet is created by the component/subsystem/software
manufacturer and begins with an introductory page describing the rest of the document, followed by listings of specific characteristics,
with further information on the connectivity of the devices. In cases where there is relevant source code to include, it is usually
attached near the end of the document or separated into another file.
Depending on the specific purpose, a data sheet may offer an average value, a typical value, a typical range, engineering tolerances,or a
nominal value. The type and source of data are usually stated on the data sheet.
A data sheet is usually used for technical communication to describe technical characteristics of an item or product. It can be published
by the manufacturer to help people choose products or to help use the products. By contrast, a technical specification is an explicit set
of requirements to be satisfied by a material, product, or service.
Below follows a collection of data sheets used to complete some of my projects.
==Microcontrollers==
* [[File:Attiny85-summary.pdf]] (summary)
* [[Image:ATtiny85.pdf]] (complete)
* [[Image:ATtiny84.pdf]] (summary)
* [[File:Attiny84 large.pdf]] (complete)
* [[Image:ATmega328.pdf]] (summary)
* [[File:ATmega328 datasheet complete.pdf]] (summary)
==Sensors==
* [[Image:DS1820.pdf]]
* [[Image:DS18S20.pdf]]
==Linear Voltage Regulators==
* [[File:LM78L05.pdf]] Low cost, 5V, 100mA regulator (TO-92 package)
* [[File:LM7805.pdf]] Low cost, 5V, 1A regulator (TO-220 package)
* [[File:LM2940.pdf]] Low drop-out, 5V, 1A regulator (TO-220 package)
==DC-to-DC buck and/or boost converters==
* [[File:LTC3525.pdf]] 3V, 3.3V or 5V, 400mA boost converter (SC-70 package)
==Special Purpose CMOS IC's==
* [[Image:74HC595.pdf]] 8-bit Serial Shift Register
==Liquid Crystal Displays==
* [[Image:SD1602G.pdf]] 16x2 LCD
* [[Image:Nokia5110-LCD.pdf]] Nokia 84x48 LCD (as used in 3310 and 5110 phones)
==RealTime Clocks==
* [[File:ISL1208.pdf]] I2C programmable RTC
==Storage==
* [[File:24LC256-512.pdf]] I2C EEPROM 256kb (32kB)
==Communication Protocols==
* [[Image:I2C-UM10204.pdf]] I2C-bus specification and user manual
* [[File:Easycomm.txt]] Easycomm1 and Easycomm2 rotor protocol
==List of common Decibel, Watts and Vpp values==
* [[powerdbvolts]]
f472581804263b799cec7433ea5606d847321978
Powerdbvolts
0
753
2976
2975
2018-04-11T05:23:09Z
Admin
1
wikitext
text/x-wiki
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -120
|1.0fW
|632nV
|-
| -119
|1.3fW
|710nV
|-
| -118
|1.6fW
|796nV
|-
| -117
|2.0fW
|893nV
|-
| -116
|2.5fW
|1.0μV
|-
| -115
|3.2fW
|1.1μV
|-
| -114
|4.0fW
|1.3μV
|-
| -113
|5.0fW
|1.4μV
|-
| -112
|6.3fW
|1.6μV
|-
| -111
|7.9fW
|1.8μV
|-
| -110
|10.0fW
|2.0μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -110
|10fW
|2.0μV
|-
| -109
|13fW
|2.2μV
|-
| -108
|16fW
|2.5μV
|-
| -107
|20fW
|2.8μV
|-
| -106
|25fW
|3.2μV
|-
| -105
|32fW
|3.6μV
|-
| -104
|40fW
|4.0μV
|-
| -103
|50fW
|4.5μV
|-
| -102
|63fW
|5.0μV
|-
| -101
|79fW
|5.6μV
|-
| -100
|100fW
|6.3μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -100
|100fW
|6.3μV
|-
| -99
|126fW
|7.1μV
|-
| -98
|158fW
|8.0μV
|-
| -97
|200fW
|8.9μV
|-
| -96
|251fW
|10μV
|-
| -95
|316fW
|11μV
|-
| -94
|398fW
|13μV
|-
| -93
|501fW
|14μV
|-
| -92
|631fW
|16μV
|-
| -91
|794fW
|18μV
|-
| -90
|1.0pW
|20μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -90
|1.0pW
|20μV
|-
| -89
|1.3pW
|22μV
|-
| -88
|1.6pW
|25μV
|-
| -87
|2.0pW
|28μV
|-
| -86
|2.5pW
|32μV
|-
| -85
|3.2pW
|36μV
|-
| -84
|4.0pW
|40μV
|-
| -83
|5.0pW
|45μV
|-
| -82
|6.3pW
|50μV
|-
| -81
|7.9pW
|56μV
|-
| -80
|10pW
|63μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -80
|10pW
|63μV
|-
| -79
|13pW
|71μV
|-
| -78
|16pW
|80μV
|-
| -77
|20pW
|89μV
|-
| -76
|25pW
|100μV
|-
| -75
|32pW
|112μV
|-
| -74
|40pW
|126μV
|-
| -73
|50pW
|142μV
|-
| -72
|63pW
|159μV
|-
| -71
|79pW
|178μV
|-
| -70
|100pW
|200μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -70
|100pW
|200μV
|-
| -69
|126pW
|224μV
|-
| -68
|158pW
|252μV
|-
| -67
|200pW
|283μV
|-
| -66
|251pW
|317μV
|-
| -65
|316pW
|356μV
|-
| -64
|398pW
|399μV
|-
| -63
|501pW
|448μV
|-
| -62
|631pW
|502μV
|-
| -61
|794pW
|564μV
|-
| -60
|1.0nW
|632μV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -60
|1.0nW
|632μV
|-
| -59
|1.3nW
|710μV
|-
| -58
|1.6nW
|796μV
|-
| -57
|2.0nW
|893μV
|-
| -56
|2.5nW
|1.0mV
|-
| -55
|3.2nW
|1.1mV
|-
| -54
|4.0nW
|1.3mV
|-
| -53
|5.0nW
|1.4mV
|-
| -52
|6.3nW
|1.6mV
|-
| -51
|7.9nW
|1.8mV
|-
| -50
|10nW
|2.0mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -50
|10nW
|2.0mV
|-
| -49
|13nW
|2.2mV
|-
| -48
|16nW
|2.5mV
|-
| -47
|20nW
|2.8mV
|-
| -46
|25nW
|3.2mV
|-
| -45
|32nW
|3.6mV
|-
| -44
|40nW
|4.0mV
|-
| -43
|50nW
|4.5mV
|-
| -42
|63nW
|5.0mV
|-
| -41
|79nW
|5.6mV
|-
| -40
|100nW
|6.3mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -40
|100nW
|6.3mV
|-
| -39
|126nW
|7.1mV
|-
| -38
|158nW
|8.0mV
|-
| -37
|200nW
|8.9mV
|-
| -36
|251nW
|10mV
|-
| -35
|316nW
|11mV
|-
| -34
|398nW
|13mV
|-
| -33
|501nW
|14mV
|-
| -32
|631nW
|16mV
|-
| -31
|794nW
|18mV
|-
| -30
|1.0μW
|20mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -30
|1.0μW
|20mV
|-
| -29
|1.3μW
|22mV
|-
| -28
|1.6μW
|25mV
|-
| -27
|2.0μW
|28mV
|-
| -26
|2.5μW
|32mV
|-
| -25
|3.2μW
|36mV
|-
| -24
|4.0μW
|40mV
|-
| -23
|5.0μW
|45mV
|-
| -22
|6.3μW
|50mV
|-
| -21
|7.9μW
|56mV
|-
| -20
|10μW
|63mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -20
|10μW
|63mV
|-
| -19
|13μW
|71mV
|-
| -18
|16μW
|80mV
|-
| -17
|20μW
|89mV
|-
| -16
|25μW
|100mV
|-
| -15
|32μW
|112mV
|-
| -14
|40μW
|126mV
|-
| -13
|50μW
|142mV
|-
| -12
|63μW
|159mV
|-
| -11
|79μW
|178mV
|-
| -10
|100μW
|200mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| -10
|100μW
|200mV
|-
| -9
|126μW
|224mV
|-
| -8
|158μW
|252mV
|-
| -7
|200μW
|283mV
|-
| -6
|251μW
|317mV
|-
| -5
|316μW
|356mV
|-
| -4
|398μW
|399mV
|-
| -3
|501μW
|448mV
|-
| -2
|631μW
|502mV
|-
| -1
|794μW
|564mV
|-
| 0
|1mW
|632mV
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 0
|1mW
|632mV
|-
| 1
|1.3mW
|710mV
|-
| 2
|1.6mW
|796mV
|-
| 3
|2.0mW
|893mV
|-
| 4
|2.5mW
|1.0V
|-
| 5
|3.2mW
|1.1V
|-
| 6
|4.0mW
|1.3V
|-
| 7
|5.0mW
|1.4V
|-
| 8
|6.3mW
|1.6V
|-
| 9
|7.9mW
|1.8V
|-
| 10
|10mW
|2.0V
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 10
|10mW
|2.0V
|-
| 11
|13mW
|2.2V
|-
| 12
|16mW
|2.5V
|-
| 13
|20mW
|2.8V
|-
| 14
|25mW
|3.2V
|-
| 15
|32mW
|3.6V
|-
| 16
|40mW
|4.0V
|-
| 17
|50mW
|4.5V
|-
| 18
|63mW
|5.0V
|-
| 19
|79mW
|5.6V
|-
| 20
|100mW
|6.3V
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 20
|100mW
|6.3V
|-
| 21
|126mW
|7.1V
|-
| 22
|158mW
|8.0V
|-
| 23
|200mW
|8.9V
|-
| 24
|251mW
|10.0V
|-
| 25
|316mW
|11.2V
|-
| 26
|398mW
|12.6V
|-
| 27
|501mW
|14.2V
|-
| 28
|631mW
|15.9V
|-
| 29
|794mW
|17.8V
|-
| 30
|1W
|20.0V
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 30
|1W
|20.0V
|-
| 31
|1.3W
|22.4V
|-
| 32
|1.6W
|25.2V
|-
| 33
|2.0W
|28.3V
|-
| 34
|2.5W
|31.7V
|-
| 35
|3.2W
|35.6V
|-
| 36
|4.0W
|39.9V
|-
| 37
|5.0W
|44.8V
|-
| 38
|6.3W
|50.2V
|-
| 39
|7.9W
|56.4V
|-
| 40
|10W
|63.2V
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 40
|10W
|63V
|-
| 41
|13W
|71V
|-
| 42
|16W
|80V
|-
| 43
|20W
|89V
|-
| 44
|25W
|100V
|-
| 45
|32W
|113V
|-
| 46
|40W
|126V
|-
| 47
|50W
|142V
|-
| 48
|63W
|159V
|-
| 49
|79W
|178V
|-
| 50
|100W
|200V
|-
|}
{| style="text-align:right; background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>dBm</b>
|style="background-color:#f2f2f2;"|<b>Power</b>
|style="background-color:#f2f2f2;"|<b>Vpp</b>
|-
| 50
|100W
|200V
|-
| 51
|126W
|224V
|-
| 52
|158W
|252V
|-
| 53
|200W
|283V
|-
| 54
|251W
|317V
|-
| 55
|316W
|356V
|-
| 56
|398W
|399V
|-
| 57
|501W
|448V
|-
| 58
|631W
|502V
|-
| 59
|794W
|564V
|-
| 60
|1kW
|633V
|-
|}
39e1ac79cfda4a3cea62ed67ef4ef38b6b92f17f
File:AD8307A Power-Meter Arduino-Nano.jpg
6
755
2981
2018-04-16T10:46:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:PowerMeter mcu inside.jpg
6
756
2983
2018-04-16T10:47:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:AD8307-rf-head.jpg
6
757
2994
2018-04-20T01:01:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Eachine-TX801.jpg
6
758
3001
2018-06-26T22:48:32Z
Admin
1
5.8GHz AV transmitter
wikitext
text/x-wiki
== Summary ==
5.8GHz AV transmitter
eac275531ea06925583538b7e2acf740a74f0059
File:1200TVL-CMOS-Camera.jpg
6
760
3005
2018-06-26T22:57:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Cameras
0
761
3007
3006
2018-06-26T22:59:07Z
Admin
1
wikitext
text/x-wiki
In 2017 I bought the "Orange 1200TVL CMOS 2.5mm/2.8mm 130/120 Degree 16:9 Mini FPV Camera PAL/NTSC 5V-12V For Micro Racer Quadcopter" from Banggood for about $17.
[[File:1200TVL-CMOS-Camera.jpg]]
Description:
Item Name : 1200TVL Mini Camera
Size : 25mm x 25mm
Weight : 9.5g
Format : PAL/NTSC Optional
PAL: 1920H×1080V(1MP)
NTSC: 1020H×1920V (1MP)
Horizontal Resolution : 1000TVL
Video Output : 1.0Vp-p/75Ω
AGC : 0.25/0.50/0.75/1.00 4 levels adjustable, up to max. 55dB
Min. illumination : 0.005
WB : ON/OFF
Exposure Type: electronic exposure
Electronic Shutter : 1/50(1/60) - 1/100000 second
Gamma Correction : 0.45/1.0
Synchronization Mode : inter-sync
Lens : 2.5mm 130°/2.8mm 120° optional
Specification :
Working Voltage : DC5-12V(wide voltage , measured 5-13V)
Working Current : 70mA(ow power consumption)
Working Temp. : -20℃--60℃
Wetness: 0% ~ 98%
https://www.banggood.com/Orange-1200TVL-2_5mm2_8mm-130120-Degree-Mini-FPV-Camera-PALNTSC-5V-12V-For-Micro-Racer-Quadcopter-p-1150403.html?rmmds=search&cur_warehouse=CN
93bee8f31cb9add56fa3acfae39d843dc7b3b915
2018 VK Contest Dates
0
762
3009
2018-07-01T10:59:01Z
Admin
1
Created page with "2018 VK Contest Dates (Phone) <pre> Date Name Start End (UTC) Bands ------------------------------------------------------------------------..."
wikitext
text/x-wiki
2018 VK Contest Dates (Phone)
<pre>
Date Name Start End (UTC) Bands
------------------------------------------------------------------------
17-18 Mar John Moyle 0100 - 0059 (24hrs) All bands
5 May Harry Angel 1000 - 1146 (106mins) 80m
21 Jul VK Trans Tasman 0800 - 1400 (6hrs) 160m, 80m, 40m
11-12 Aug Remembrance Day 0300 - 0300 (24hrs) All bands
18-19 Aug Intl Lighthouse 0100 - 2359 (48hrs) All bands
6-7 Oct Oceania DX 0800 - 0800 (24hrs) 160/80/40/20/15/10m
</pre>
Sources:
* http://www.wia.org.au/members/contests/about/
* https://illw.net/
a70fb7b9eeaa1f4447f001d364598534e675d4a7
Quadcopters
0
734
3010
2924
2018-09-02T03:04:31Z
Admin
1
wikitext
text/x-wiki
Remote controlled multi-rotor flying platform
These pages link to the various pieces of equipment I use for flying my quadcopter.
* [[quad-frames]]
* [[transmitters]]
* [[receivers]]
* [[flightcontrollers]]
* [[ESC]] (Electronic Speed Controllers)
* [[motors]]
* [[antennas]]
* [[batteries]]
* [[battery management]] (chargers and balancers)
===FPV (first person video)===
* [[OSD]] (on-screen displays)
* [[cameras]]
* [[VTX]] (Video Transmitters)
* [[video receivers]]
* [[DVR]] (digital video recording)
* [[goggles]]
1a2060ad6c7fd7dc455f4b7b06ee944a0045a4e8
File:Rappewillem 200x80.jpg
6
763
3011
2018-09-22T09:51:56Z
Admin
1
Rappe Willem Moet Blijven!
wikitext
text/x-wiki
== Summary ==
Rappe Willem Moet Blijven!
d9046855b6248f3a319bc93162d2fc18354549f8
File:Rappewillem 1554x618.jpg
6
764
3014
2018-09-22T09:55:42Z
Admin
1
Rappe Willem Moet Blijven! (Cafe de Ster Groningen)
wikitext
text/x-wiki
== Summary ==
Rappe Willem Moet Blijven! (Cafe de Ster Groningen)
38355eb45c8118a920cd43f21c697164a973b99b
Battery chargers
0
574
3018
2345
2018-12-02T04:21:28Z
Admin
1
wikitext
text/x-wiki
Here is a list of battery chargers that I have used for various projects. The chargers are divided in these three categories:
==mains powered==
===12V===
<gallery caption="Powertech MB-3526 Battery Charger" widths="150px" heights="150px" perrow="2">
File:Powertech-MB-3526.jpg|Powertech MB-3526
File:MB3526-charge-example.png|Example recharge
</gallery>
[[12V SLA Charge Time]]
==solar charge controllers==
===12V===
<gallery caption="KEMO M149 Solar Charge Controller" widths="150px" heights="150px" perrow="2">
File:Kemo M149 solar-charge-controller.jpg|Kemo M149
File:KEMO-M149 charge-example.png|Example recharge
</gallery>
<gallery caption="Powertech MP-3129 Solar Charge Controller" widths="150px" heights="150px" perrow="3">
File:Powertech MP3129 solar-charge-controller.jpg|Powertech MP-3129
File:MP3129-charge-example.png|Example recharge
File:MP3129 manual.pdf|User Manual
</gallery>
<gallery caption="Blue PWM Solar Charge Controller" widths="150px" heights="150px" perrow="3">
File:Solar-Charge-Controller pwm blue.jpg|PWM Charger
File:Blue-PWM-SCC-Example.png|Example recharge
File:Blue-PWM-Solar-Charge-Controller manual.jpg|User Manual
</gallery>
<gallery caption="CMP12/24 Black-Orange Solar Charge Controller" widths="150px" heights="150px" perrow="2">
File:CMP12-24 Black-Orange Solar-Charge-Controller.jpg|PWM Charger
File:CMP12-24 Black-Orange Solar-Charger manual.pdf|User Manual
</gallery>
==low power==
===4.2V Li-Po/Li-Ion===
<gallery caption="Microchip MCP-73831T Charge Controller" widths="150px" heights="150px" perrow="2">
File:MCP73831.jpg|MCP73831T
File:MCP73831t.pdf|Datasheet
</gallery>
<gallery caption="Linear Technologies LTC-4054 Charge Controller" widths="150px" heights="150px" perrow="3">
File:LTC4054.jpg|LTC4054-4.2
File:LTC-4054-charge-example.png|Example recharge
File:LTC-4054-42xf.pdf|Datasheet
</gallery>
f7d82dc27549c9601cca50da0802fd30891cb455
File:12V 1-3Ah-SLA battery.jpg
6
765
3019
2018-12-02T04:26:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Battery-powered-PIR-LEDs.jpg
6
767
3023
2018-12-02T04:51:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-21 173511-first1000.png
6
768
3025
2018-12-02T04:55:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-21 173511-after1000.png
6
769
3026
2018-12-02T04:56:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-24 121639-first1000.png
6
770
3029
2018-12-02T05:19:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-24 121639-after1000.png
6
771
3030
2018-12-02T05:20:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-26 171610-first1000.png
6
772
3037
2018-12-02T05:44:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-11-26 171610-after1000.png
6
773
3038
2018-12-02T05:44:45Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Battery-charger-curve.jpg
6
774
3042
2018-12-02T06:01:16Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-12-01 090327-first1000.png
6
775
3046
2018-12-02T06:11:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-12-01 090327-after1000.png
6
776
3047
2018-12-02T06:12:21Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-12-02 171605-first1000.png
6
777
3048
2018-12-02T06:17:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Datalogger 2018-12-02 171605-after1000.png
6
778
3049
2018-12-02T06:18:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
12V SLA Charge Time
0
766
3060
3059
2018-12-02T07:28:16Z
Admin
1
wikitext
text/x-wiki
When I first purchased this charger I was pleased that it appeared to charge batteries as advertised. But after a while I started to wonder if there were any smarts inside the charger.
[[File:Powertech-MB-3526.jpg]]
To demonstrate this, I decided to put a small 1.3Ah SLA battery to the test.
[[File:Battery-powered-PIR-LEDs.jpg]]
I use this battery to power a small PIR-activated night-light with 3x LEDs. Power consumption is minimal and it only comes on a few times per day so I expect it to last for many weeks on a single charge. Standby current draw is 37uA, and when the PIR detects motion it activates the LEDs and power consumption goes up to about 30mA for 5 minutes.
After letting it run for a week I decided to measure the voltage and was surprised to see that it was already down to 11.8 Volts. So I put in on the charger and decided so come back later until the charger indicated with a green light that the battery was fully charged. At first I didn't measure the final voltage after charge, and simply put the battery powered night-light back on the window sill, expecting not have to recharge it for at least several weeks.
Curiosity got the better of me after a week and I measured the battery voltage again. 11.8V What the..? Clearly something wasn't right here.
I put it back on the charger, but this time I also connected my voltage data-logger.
[[File:Datalogger 2018-11-21 173511-first1000.png]]
This first graph spans about 30 seconds of activity (1000 samples worth) and clearly shows the initial starting voltage of about 11.8V. About 15 seconds after starting the data-logger I connect the charger and let it sit there until the green light comes on. After about 15 seconds the battery already reaches 14.8V.
[[File:Datalogger 2018-11-21 173511-after1000.png]]
The second graph spans about 67 hours (about 2.7 days) and shows a few interesting bits. First, on the far left you can just see the voltage coming down from 12.2V and then stopping at about 11.9V. The green light had already come on and I believed that this indicated that the battery was full. I must have had the charger connected for maybe 5 minutes and simply thought that the charger did its work very quickly (Not so! Read on...). I put the night-light back on the window sill with the data-logger still connected.
After about 2 days I wanted to find out how my battery was doing and decided to measure the voltage. To my surprise the voltage had dropped down again to 11.7V, but now I had the data-logger graphs to hopefully reveal what had happened.
Looking at the graphs above it clearly shows that the power consumption is fine during normal operation, but the battery just isn't charged full enough. How full? Well, that is part of the debate, but some common indicators from batteryuniversity.com and other sites say that for a 12V SLA battery the full-state is around 12.8V.
My battery charger however was already switching over to the green 'full' light after about 60 seconds, and stop charging at about 12.2V.
Or did it?
I wondered what would happen if I would let the battery charger stay connected AFTER the green light had come on for a few hours and see what the data-logger could reveal.
Again, I hooked up the battery charger, and noticed that the green light came on after 60 seconds already.
[[File:Datalogger 2018-11-24 121639-first1000.png]]
The above graph shows that the battery reaches 14.8V within 30 seconds of charging.
The long-term picture over 68 hours, including 2 hours of trickle charge shows this:
[[File:Datalogger 2018-11-24 121639-after1000.png]]
Here, I let the charger stay connected for another 2 hours AFTER the green had come on.
On the far left you can see the battery voltage coming down from 14.8V and stop at about 12.1V and then rises up slowly to 12.4V over a period of about 2 hours. This is the behaviour of the trickle-charge feature of the charger. It is after these 2 hours that I disconnect the battery from the charger and put the night-light back on the window sill and let it sit there for the next two days.
When I saw this graph I realised that I was on to something. The charger does not use the green light to show that the battery is full, but only indicates that it has reached about 15V and then then switches over to trickle-charge. The two hour trickle-charge raised the battery voltage a bit higher than it was before. Previously I had been putting the battery powered night-light away with just 11.9V of charge, I could now see that after 2 hours of trickle-charge the battery was holding charge at 12.0V. This led me to experiment with a much longer trickle-charge period.
I measured up the voltage after about 2 days of use and saw 11.7V again, but that no longer surprised me. Now I wanted to see what would happen if I let it sit on trickle-charge for about 3 hours.
I connected the battery charger about 10 seconds after starting the data-logger.
[[File:Datalogger 2018-11-26 171610-first1000.png]]
This shows that in the first 30 seconds the battery quickly shoots up to 15V and then the charger backs off and picks up again at about 12V. Interesting. My only explanation for why we see this up-and-down behaviour in one 30-second graph is that the battery may have been in healthier state. Maybe just 2 hours of trickle-charge already helped.
[[File:Datalogger 2018-11-26 171610-after1000.png]]
The picture looks similar as before over a 52-hour period. However, the 3-hour trickle-charge brings the battery voltage up to around 12.5V (this was 12.4V with a 2-hour trickle-charge). There is no sign that the trickle-charge has finished as the battery voltage is well below the ultimate 12.8V (or even 14.4V as some graphs show).
Now I'm beginning to understand these charge curves:
[[File:Battery-charger-curve.jpg]]
Recommended charge voltages for 12V and 24V Lead-Acid batteries.
This means we can leave the trickle-charge on for a much longer period.
Let's see what a trickle-charge over 5 hours looks like:
[[File:Datalogger 2018-12-01 090327-first1000.png]]
Again, we see a fairly quick charge to 15V; the green light on the charger comes on.
[[File:Datalogger 2018-12-01 090327-after1000.png]]
After leaving the battery connected for 5 hours on trickle-charge, the voltage rises steadily to about 12.75V. What's even better, the battery voltage after a runtime of 5 days is now still just above 12.0V.
This is starting to look better and better.
Let's try trickle-charging for double that, just over 10 hours.
The battery reaches 15V quicker than before (probably because we started at 11.9V).
[[File:Datalogger 2018-12-02 171605-first1000.png]]
And we can see that the trickle-charging has brought the battery voltage before disconnect up to a maximum 13.4V.
[[File:Datalogger 2018-12-02 171605-after1000.png]]
Look at that! The final resting voltage after trickle-charging is about 12.6V. This should give the application a chance to last the weeks' lifespan I expected in the first place.
Only now am I realising that I never really charged this battery properly with said charger.
According to the Battery Charge Curve graph, the Float charge is around 13.6V so I can easily leave the charger connected for a few more hours. This would probably be the only way to see if the charger really stops at a certain voltage.
(waiting for testing to complete, watch this space..)
98eae6ef39768a0b4cf9885f30cfabea5e20314f
VTX
0
759
3063
3062
2018-12-10T02:48:36Z
Admin
1
wikitext
text/x-wiki
In 2017 I bought the Eachine TX801 5.8G 72CH 0.01mW 5mW 25mW 50mW 100mW 200mW 400mW 600mW Switched AV VTX FPV Transmitter for about $27 on Banggood.
[[File:Eachine-TX801.jpg]]
Description:
Brand Name : Eachine
Item Name : TX801 Transmitter
Antenna Gain: 3Dbi
Antenna Conenctor : RP-SMA
Frequency: 5325-5945MHZ
Channel : 72CH
Transmitting Power: 0.01MW/5MW/25MW/50MW/100MW/200MW/400MW/600MW Switchable
Video Format: NTSC/PAL
Working Current: (MAX)7V-550mA; 12V-300mA; 24V-160mA
Audio Bandwidth : 6.5MHZ
Video Bandwidth: 18MHZ
Audio Carrier : 1Vp-p(1KHZ)
AF Input Impedance : 10KΩ
Working Voltage : 7-24V
Output Voltage : 5V
Weight :7.3g
Size :28*20*8MM
Cable : JST-GH 1.25mm 5P to TJC8 2.54mm 3P
Blue : GND
Yellow : Video
Red : Output Voltage
Features :
* 8 power levels switchable: 0.01MW/5MW/25MW/50MW/100MW/200MW/400MW/600MW
* 72 channels, cover all 5.8G frequency.
* With Microphone, support audio transmission
* 5V output, max working current 550mA
* Multi-channel synchronization does not interfere with each other
===7-segment display===
The 7-segment display cycles between three values.
* Channel (1 - 8) [solid]
* Band (A, b, E, F, r, U, o, L, H) [solid]
* Power (1 - 8) [blinking]
The power levels are:
1 10uW (pit mode)
2 5mW
3 25mW (max power for racing)
4 50mW
5 100mW
6 200mW
7 400mW
8 600mW
https://www.banggood.com/Eachine-TX801-5_8G-72CH-0_01MW5MW25MW50MW100MW200MW400MW600MW-Switched-AV-VTX-FPV-Transmitter-p-1147691.html?cur_warehouse=USA
1b8d4bfd8295047d6ea55fcf4a0c06064c2cb836
Nature
0
326
3064
1474
2018-12-29T22:09:57Z
Admin
1
wikitext
text/x-wiki
* [[Nature in and around our house]]
* [[intriguing matters]]
3b82916df8df205bde4973a03f46fe775d14f3b6
Intriguing matters
0
779
3067
3066
2018-12-29T22:30:44Z
Admin
1
wikitext
text/x-wiki
===Why is the sky dark at night?===
* red-shift (to infrared) causes far away stars to be invisible to the human eye
* universe not old enough to have stars everywhere
===Why is glass transparent?===
* in specific atoms where the electron energy gap is too high for photons with visible wavelengths to excite the electrons into a higher energy level, the photon is not absorbed and will pass through.
===Why are there two tides per 24h on earth when there's just one moon?===
* water and earth are pulled on the near side, lagging water bulge on the far side.
10728e249c9bfd9a954d45ff392c0812a706e5d7
Ionosphere
0
780
3088
3087
2019-03-18T21:34:18Z
Admin
1
wikitext
text/x-wiki
The ionosphere is defined as the layer of the Earth's atmosphere that is ionized by solar and cosmic radiation. It lies 75-1000 km (46-621 miles) above the Earth. (The Earth's radius is 6370 km, so the thickness of the ionosphere is quite tiny compared with the size of Earth.)
===Layers:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Layer</b>
|style="background-color:#f2f2f2;"|<b>Height</b>
|style="background-color:#f2f2f2;"|<b>Effect</b>
|style="background-color:#f2f2f2;"|<b>Active</b>
|style="background-color:#f2f2f2;"|<b>Daytime Characteristics</b>
|style="background-color:#f2f2f2;"|<b>Night time Characteristics</b>
|style="background-color:#f2f2f2;"|<b>Usage</b>
|-
|F2
|150 - 500km
|refract
|day and night
|Refracts below MUF (~30MHz)
|Refracts below MUF (~30MHz)
|night-time DX
|-
|F1
|150 - 500km
|refract
|daytime
|Refracts below MUF (~30MHz)
|weak refraction
|
|-
|Es
|?
|refract
|Sporadic
|Refracts below 50MHz
|Refracts below 50MHz
|DX
|-
|E
|90 - 150km
|refract
|daytime
|Refracts below 10MHz
|weak refraction after sunset
|working greyline DX
|-
|D
|60 - 90km
|absorb
|nighttime
|Attenuates <10MHz peak attenuation at noon
|minimal
|local MF and low HF stations during the day
|}
===Bands:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Band</b>
|style="background-color:#f2f2f2;"|<b>Frequency</b>
|style="background-color:#f2f2f2;"|<b>Best at</b>
|style="background-color:#f2f2f2;"|<b>Worst at</b>
|style="background-color:#f2f2f2;"|<b>Typical use</b>
|-
|630m
|470kHz
|Night
|Day
|only usable during the night, local
|-
|160m
|1.8MHz
|Night
|Day
|only usable during the night, local
|-
|80m
|3.6MHz
|Night
|daytime
|DX at night, local during the day
|-
|40m
|7.1MHz
|Night
|
|DX at night, local during the day
|-
|30m
|10MHz
|
|
|
|-
|20m
|14.1MHz
|day and night
|
|most reliable DX band
|-
|15m
|21MHz
|day and night
|
|
|-
|10m
|28MHz
|day
|night
|daytime to early evening
|-
|6m
|50MHz
|day
|night
|daytime to early evening
|}
de6a77c342d09c322863b371ce9e4d4b60421af7
Observations of the Australian culture by a Dutch immigrant
0
201
3092
3091
2019-04-20T08:29:57Z
Admin
1
wikitext
text/x-wiki
In 2001 I immigrated from the Netherlands to Australia. Since then I have worked and lived in various places. During this time I noticed some interesting details of the Australian land and culture that were not be obvious at first. You may find these details useful when visiting Australia as a tourist.
This page further describes some of those details. Some if them are supposed to be funny, so have a chuckle! :-)
==Housing==
* Most rent is charged per week or per fortnight
* Many houses are not built with insulation in mind.
* Be sure to find single-glasing, gaps around most doors and no hallway as a wind-buffer.
* Most houses do not have central heating so a small electric heater or putting on an extra jumper are your options if a reverse-cycle air-conditioning system is not installed.
* Door handles are often knobs, making them unusable for people that have poor grip strentgh.
* Many mailboxes are too small to receive a straight A4 sheet mail pieces
==Working==
* Most salaries are paid weekly or fortnightly.
* Staff birthdays are usually ignored.
==Cities==
* Garbage is collected even on public holidays such as Christmas day and New Year's day.
* Street names are not unique in a city (e.g. in Newcastle, there is a George Street in Mayfield East, Wallsend, North Lambton, Tighes Hill and Highfields)
==Food==
* Meat pies is a common food available in most road cafe's. It's a meat-filled pastry mini-pie, to be eaten hot, and can be served as-is or with a mushy peas/mash potato/gravy dressing.
* Recycling of cans (glass, plastic or aluminium) and platic (bottle) crates is not available in most places. Only one state (South Australia) has implemented the system for empty bottles.
==Electrical==
* 240V AC @ 50Hz with a flush plate connection socket.
* In 2011 a bill was passed to prevent the sale of any incandescent light bulbs. Regardless whether these are better or worse for the environment, you will not be able to buy any traditional light bulbs.
* most household light sockets are B22d (bajonet) but you can still find E-27 (screw) fittings as well.
==Trains==
* Cheap fares on the regular CityRail lines. A weekday return ticket from Newcastle to Sydney (160km) is around $16 for an adult (2012 prices).
==Prices==
* Unleaded Regular Petrol costs about $1.45/l (premium $1.65, gas $.., diesel $..)
* The Australian dollar was 'above parity' with the USD for most of 2011 and is now around 99 USD-cents (May 2012).
==Road==
* As per the British system, traffic keeps left.
* Despite many signs indicating 'keep left unless overtaking', most drivers keep driving in the middle or right lanes.
* Most Australians are never agressive or impatient until they drive a car.
* Periodic road-safety tests for rego renewal do not check for engine emissions.
==Pedestrians==
* as on the road, keep left when walking. You'll cause awkward situations and bump into people if you dont'.
==Language==
* Slang: pluggers (flip flops, thongs), howyergoing (not too well, "I felt a bit howyergoing"), nail (cigarette), damage beers (drink beer).
* Apart from the expected slang there are also some words that are used to 'culture up' some common day products: Medley (combination of various food products), Gourmet (special, in any form), rustic (rural), salsa (like Medley), Boutique (special)
e87309d591f506ab34dd7d3df778ea4b94e56837
File:Rifle-magazine.jpg
6
781
3101
2019-04-22T11:33:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Rpi-rtl-sdr
0
381
3106
3105
2019-04-23T09:45:14Z
Admin
1
wikitext
text/x-wiki
In 2013 I bought one of these cheap USB DVB-T RTL-SDR dongles.
[[File:R820T.jpg|200px|thumb|none|R820T with remote control and antenna]]
[[File:Rtlsdr r820t mini float.jpg|200px|thumb|none|Inside the R820T]]
Details:
<pre>
Tuner Frequency Range
Elonics E4000 52 - 2200 MHz with a gap from 1100 MHz to 1250 MHz (varies)
VID PID Tuner Device Name
0x0bda 0x2838 E4000 ezcap USB 2.0 DVB-T/DAB/FM dongle
</pre>
Source: http://sdr.osmocom.org/trac/wiki/rtl-sdr
It came with a small magnetic-base antenna and some software. Initially I used it on Windows and was able to receive signals between 50MHz - 1GHz. There are mods available to make them listen on lower frequencies (HF) but I got it to show aircraft's transponder messages using RTL1090. Combined with Google Maps and VirtualRadar it is fascinating and fun to see what flies overhead..
[[File:RTL1090 and VirtualRadar.jpg|200px|thumb|none|VirtualRadar showing realtime transponder messages]]
Currently I am attempting to use one of these dongles to act as an aprs receiver (Rx-Only iGate) for 2m (145.175MHz). If this works I will free up one of my handheld transceivers and I will be able to bring down the power consumption and size of the project considerably.
Linux uses rtl_fm to communicate with these devices.
This is what you should see when plugging in the RTL-SDR on a Debian 9 system:
<pre>
Apr 22 08:34:14 debian kernel: [ 358.696018] usb 8-5: new high-speed USB device number 6 using ehci-pci
Apr 22 08:34:14 debian kernel: [ 358.856014] usb 8-5: New USB device found, idVendor=0bda, idProduct=2838
Apr 22 08:34:14 debian kernel: [ 358.856018] usb 8-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 22 08:34:14 debian kernel: [ 358.856020] usb 8-5: Product: RTL2841UHIDIR
Apr 22 08:34:14 debian kernel: [ 358.856022] usb 8-5: Manufacturer: Realtek
Apr 22 08:34:14 debian kernel: [ 358.856024] usb 8-5: SerialNumber: 00000001
Apr 22 08:34:14 debian mtp-probe: checking bus 8, device 6: "/sys/devices/pci0000:00/0000:00:1d.7/usb8/8-5"
Apr 22 08:34:14 debian mtp-probe: bus: 8, device: 6 was not an MTP device
Apr 22 08:34:14 debian kernel: [ 359.121689] usb 8-5: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state
Apr 22 08:34:14 debian kernel: [ 359.179365] usb 8-5: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
Apr 22 08:34:14 debian kernel: [ 359.179381] DVB: registering new adapter (Realtek RTL2832U reference design)
Apr 22 08:34:14 debian kernel: [ 359.227932] i2c i2c-8: Added multiplexed i2c bus 9
Apr 22 08:34:14 debian kernel: [ 359.227934] rtl2832 8-0010: Realtek RTL2832 successfully attached
Apr 22 08:34:14 debian kernel: [ 359.227943] usb 8-5: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
Apr 22 08:34:14 debian kernel: [ 359.257263] r820t 9-001a: creating new instance
Apr 22 08:34:14 debian kernel: [ 359.264401] r820t 9-001a: Rafael Micro r820t successfully identified
Apr 22 08:34:14 debian kernel: [ 359.267992] rtl2832_sdr rtl2832_sdr.1.auto: Registered as swradio0
Apr 22 08:34:14 debian kernel: [ 359.267994] rtl2832_sdr rtl2832_sdr.1.auto: Realtek RTL2832 SDR attached
Apr 22 08:34:14 debian kernel: [ 359.267996] rtl2832_sdr rtl2832_sdr.1.auto: SDR API is still slightly experimental and functionality changes may follow
Apr 22 08:34:14 debian kernel: [ 359.274612] Registered IR keymap rc-empty
Apr 22 08:34:14 debian kernel: [ 359.274710] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb8/8-5/rc/rc0/input32
Apr 22 08:34:14 debian kernel: [ 359.274811] rc rc0: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1d.7/usb8/8-5/rc/rc0
Apr 22 08:34:14 debian kernel: [ 359.276298] usb 8-5: dvb_usb_v2: schedule remote query interval to 200 msecs
Apr 22 08:34:14 debian kernel: [ 359.286751] lirc_dev: IR Remote Control driver registered, major 244
Apr 22 08:34:14 debian kernel: [ 359.287484] usb 8-5: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected
Apr 22 08:34:14 debian kernel: [ 359.287526] usbcore: registered new interface driver dvb_usb_rtl28xxu
Apr 22 08:34:14 debian kernel: [ 359.344649] rc rc0: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0
Apr 22 08:34:14 debian kernel: [ 359.344651] IR LIRC bridge handler initialized
</pre>
test audio out by listening to a local FM broadcast station (update frequency for your area)
<pre>
rtl_fm -f 102.1M -s 170k -r 44100 -o 1 - | aplay -t raw -r 44100 -f S16_LE -c 1 -V mono -
</pre>
rtl_fm
* -s 170k = Sampling bandwidth, use 170k for Wide-Band FM, 25k for Narrow-Band FM
* -r 44100 = output sampling rate; must always be less than the Sampling Bandwidth
* -o 1 = Oversampling
NOTE:
aplay
* -c 1 = Channels (use 2 for stereo)
* -V mono = VU-meter (show signal strength on screen)
* -r 44100 = sampling rate (max=44100) (must match output sampling rate from rtl_fm)
===streaming over TCP===
If your device does not have a soundcard available you can stream the audio over the network.
On the server:
(required packages: apt-get install sox libsox-fmt-mp3 socat)
<pre>
rtl_fm -f 106.1M -s 170k -r 44100 - | sox -traw -r44100 -es -b16 -c1 -V1 - -tmp3 - | socat -u - TCP-LISTEN:8080
</pre>
On the receiver:
(required packages: apt-get install sox libsox-fmt-mp3 netcat)
<pre>
netcat <server> 8080 | play -t mp3 -
</pre>
===testing APRS packets with MultimonNG===
Feeding a pre-recorded aprs packet in .wav format into multimon (it supports .mp3 as well)
<pre>
multimon-ng -a AFSK1200 -t wav -i <soundfile.wav>
</pre>
===creating a Virtual Sound Device for the RTL-SDR===
This will allow us to simply connect soundmodem to the virtual sound device and all we need to do then is feed it with audio from the RTL-SDR.
<pre>
# modprobe snd-aloop
-or-
# echo "snd-aloop" >> /etc/modules
(reboot)
</pre>
===send RTL-SDR audio to the virtual sound device===
<pre>
$ rtl_fm -f <freq> -s 100k -r 22050 - | aplay -r 22050 -f S16_LE -t raw -c 1 -D hw:Loopback,0,0
</pre>
Confirm audio is coming through:
<pre>
arecord -f S16_LE -r 22050 -D plughw:1,1 - | aplay -r 22050 -f S16_LE -
</pre>
We can now use the virtual sound device to configure soundmodem
(more info here when I get it to work!)
463bd2c140888e3c2af35ad28f5de21993864a7c
Mcu 0138-AD8307-power-meter
0
782
3112
2019-05-30T11:01:49Z
Admin
1
Admin moved page [[Mcu 0138-AD8307-power-meter]] to [[Mcu 0134-AD8307-power-meter]]
wikitext
text/x-wiki
#REDIRECT [[Mcu 0134-AD8307-power-meter]]
b243986e4fa00b4c15cf0fe1cb2399aa78730b88
Mcu 0134-AD8307-power-meter
0
754
3113
3111
2019-05-30T11:02:28Z
Admin
1
wikitext
text/x-wiki
A while ago I decided to put together a small, fixed-frequency QRP CW tranceiver kit. At first I settled on the Pixie II, a small, fixed-frequency (around 7.023MHz) transceiver that outputs a Continuous-Wave carrier (CW, used for Morse Code) of around 2 Watts. The one I got was a cheap clone, readily available from eBay for about $6 (yes, six! dollars). The kit worked, but I found the clicking noises in the headphones when sending morse code to be very annoying, waay to loud for my ears. I researched a bit and came across a similar kit, but with better reviews, called the Forty-Niner. (http://www.norcalqrp.org/files/49er.pdf). Slightly larger parts count, single frequency, low power CW (about 2 Watts) and at $12 (whoa, double the price!) still cheap as chips. Sending morse with this kit was a lot kinder to my ears. It was with this kit that I made my first on-air morse code contacts. Then, in August 2017, Hans Summers from QRP-Labs finished the design of his QCX; a 5-Watt, single BAND, CW transceiver kit, on sale for just $49! (given the many more features this kit has, the price is still absurdly low).
One thing I have always been wondering since my early days of playing around with the Pixie, is how much power is actually coming out the radio? Often, analogue power meters for HF are poor at showing accurate measurements when the needle is barely moving up from the resting position.
Then I remembered, I once ordered samples of an Analog Devices chip that featured in some articles on (very) low-signal power measurements.
Meet the AD8307 Log Amplifier:
* DC output voltage of 25mV per dB
* 92dB dynamic range
* operating range of up to 500MHz
The earliest articles (around 2001) used the AD8307 with additional opamps and driving a panel meter or digital multimeter to show the measurement values. Then, over time, came articles where the chip provided a signal to a microcontroller. Some used Microchip PICs, some used Atmels (many Arduinos have the Atmel ATMega328). Since an Arduino Nano clone can be purchased for about $5 on eBay I decided to make my own Low Power RF power meter with a 2x16 backlit LCD.
The design is based around the AD8307 Log Amplifier, but the amplifier is housed in a separate box from the microcontroller and LCD to prevent it from picking up noise. In a later design I may try to incorporate it all in one box.
For showing the measurements I chose to use a backlit 2x16 LCD. The specific one I had only had the ringle-row 24-pin data and power connector, but there exists a small add-on board that adds I2C functionality to the display.
Although the 5V linear voltage regulator on the Arduino Nano is the main power supply for the ATMega chip (and a reference voltage for the internal ADC), I deciced to make use of a very stable external voltage reference in the form of the MCP1541; a TO-92 package, 4.096V voltage reference. This assures that the voltage coming out of the Log Amp is always referenced against a known, stable voltage, ensuring that the dBm measurement is as accurate as possible.
[[File:AD8307A Power-Meter Arduino-Nano.jpg]]
[[File:AD8307-rf-head.jpg]]
[[File:PowerMeter mcu inside.jpg]]
For more information on the details of this project:
Original Article by Wes Hayward (W7ZOI) Bob Larkin (W7PUA) as published in QEX magazine, June 2001, pages 38-43
www.qsl.net/sz1a/download/build%20an%20rf%20power%20meter.pdf
4124ae7788ba7638033cd4df7c221f067fdd54f7
Mcu 0060-Voltage-data-logger
0
92
3117
331
2019-06-10T22:37:03Z
Admin
1
wikitext
text/x-wiki
This project is outdated and now replaced by this project:
http://www.marcelpost.com/wiki/index.php/Mcu_0084-voltage-datalogger
65a13d5919a9524e0a65dbccef5e0f39ddc518f3
Mcu 0084-voltage-datalogger
0
318
3119
3118
2019-06-10T23:45:38Z
Admin
1
wikitext
text/x-wiki
Voltage data logger
This project came to life when I wanted to measure my solar-panel assisted 124Ah SLA battery in my shed. I wanted to use the battery for powering other projects and realised that ideally I should be able to measure the voltage at regular intervals to make sure that the voltage isn't running too low.
Ideally what I want for this device is:
* a small handheld device
* battery powered using common batteries
* long battery lifetime
* recharge batteries through USB port (not implemented yet)
* measure input voltages between 0 - 15V (0 - 20V as it turns out)
* (almost) no drain on the battery being measured
* basic information through LCD module
* able to set accurate sampling times (e.g. every n second(s), minute(s), hour(s), day(s))
* store measurements in the device
* extract measurement data through USB connection to a PC
==Phase 1 determining the functional design==
Similar as above:
===a small handheld device===
I wanted a device that I can bring to the voltage source that I am interested in, so anything running of mains power was not considered. Since I've made some other projects with microcontrollers I was keen to come up with a design that would fit in the palm of your hand, about similar in size to a TV remote control unit. The biggest components would be the LCD module and the battery compartment.
===energy efficient microcontroller===
I have been using the ATtiny85 and 84 microcontrollers for various projects over the years. When in sleep mode these devices draw about 5uA. These will be quite suitable for this project. Since I will be driving an LCD module I expect to need some extra IO hence the 14-pin ATtiny84 will be the device of choice for this project.
[[File:T84.jpg|thumb|none|200px|ATtiny84]]
===battery powered using common batteries===
The ATtiny84 can be fed with anything between 2.7V and 5.5V DC. All the other components it needs to interface with can also run in this range. I decided to run the mcu and the main peripherals on 5V using a boost converter. The LTC3525 uses only 3 external components to output 5V and it's very simple to use. Soldering the chip required a steady hand. The total width of the chip is only 2mm and the pin spacing is about 0.65mm!
[[File:LTC3525 recommended placement.png|thumb|none|250px|LTC3525 400mA Boost Converter]]
[[File:LTC3525-ESC6-5-PBF SC70.jpg]]
[[File:LTC3525.pdf]]
Input voltage range for the boost converter is between 0.5V and 6V so this can easily be accomplished by feeding it with 2x AA or 2x AAA batteries. The handheld enclosure I can pick up easily from my local electronics store has a compartment for either 1x 9V or 2x AA batteries. Since the capacity of a 9V battery is very poor and the AAA are not a good fit for this enclosure I decided to go with 2x AA batteries. With rechargeable NiMH this will give us 3V and a capacity of around 2800mAh for two batteries in series and with non-rechargeable Alkaline it will be around 1500mAh for two in series.
(I did not end up using a battery charger circuit in this version, so although rechargeable batteries will work, I will have to take them out and charge them externally with a separate charger)
===long battery lifetime===
The device should be able to take measurements for extended periods at regular intervals. My aim is to have enough power to have the device running on a single charge for at least a few months. We can achieve this by choosing low-power components and putting the microcontroller in sleep mode in between sampling. There are trade-offs of course. One being that the LCD module can not be constantly powered between measurements because it draws too much power. If we take a conservative approach and assume that we're running off non-rechargeable Alkaline batteries we will have about 1500mAh to go around. To get a lifetime of a year we must make sure the constant current drain does not exceed 171uA (1.5A / 8760 hours in a year). In the end it will be a combination of a much lower current drain for the sleep period (e.g. perhaps around 50uA) and a much higher current drain during the actual taking of the measurement (e.g. 20mA, to wake up the mcu, perhaps briefly enable the LCD, drive some FETs and/or transistors, activate a voltage divider, do the processing, etc..) and then go back into sleep mode.
===recharge batteries through USB port===
(Nice to have, but the current project design did not include this feature)
Since USB will be used to retrieve data (see below) we can make use of the power lines of the USB port of the host system (PC or Laptop) to recharge the on-board batteries. There should be a physical switch as well as some intelligence to determine whether or not the unit contains rechargeable batteries but if it has then we can use up to 500mA from a USB port for a battery charging circuit. The battery charging circuit should be able to measure and adjust the voltage down from 5V (maximum of about 3.5V across 2x AA NiMH batteries in series) and it should also be able to measure and adjust the charging current (charging 2800mAh AA NiMH's at 1C would be 2.8A but we're limited by the USB port to about 500mA, so this results in about 17% of 1C). During charging the circuit should constantly measure voltage, current and battery temperature and time elapsed. It should automatically cut off when the batteries are charged. The charging time is probably going to be several hours but it should be a simple plug-in-and-wait scenario.
UPDATE: the battery charging feature is useful to have, but after having used this datalogger for a few years now I haven't really had a need for it. Most times my datalogging needs were completed after a few days, with some experiments spanning a couple of months. The batteries last a long enough time to not have to worry about it and it also minimises the risk of leaking chemicals by having to remove batteries every once in a while anyway.
===(almost) no drain on the battery being measured===
A simple resistor voltage divider seems perfect for measuring the input voltage. However, if this device is used to measure the self-discharge of a single AA NiMH battery then it becomes apparent that the voltage divider needs to be disconnected when the mcu is in sleep mode. This can be achieved by adding a P-channel FET in series as they are voltage-controlled devices and draw almost no current (see schematic below). The microcontroller will be able to switch on the P-channel FET using an N-channel FET with practically no additional current draw and when the measurements have been taken the FETs are turned off and the voltage divider returns to high-impedance and will cause no further load on the voltage source to be tested.
===measure input voltages between 0 - 20V===
Most voltages that I am able to work with safely (and legally) in and around the house can be up to 24DC. When charging batteries the voltage can go up to 15 Volts so I thought 0 to 20 volts would be a good range. I should be able to change this to 0 - 50V or so if I want to measure Solar panel open-circuit voltage but that's not an immediate need. The ADC on the t84 can be set to 10 bits resolution, so with 20V maximum input voltage that could give a theoretical resolution of about 0.019uV per step.
* NOTE: I have not yet taken the steps to incorporate a dedicated reference voltage chip as I'm fairly hopeful that the boost converter will produce a steady voltage. If however the sampling is not stable enough I will have to work on this part at a later stage. There is a possibility to use an internal 1.1V reference voltage. This is a feature inside the ATtiny84. All that's required to use this method is to change the voltage divider resistors with parts that bring down the maximum voltage to 1.1V and modify the code slightly to change a multiplier to a value that is calibrated with the real voltage.
Shown below is a basic resistor voltage divider that will bring down the 0V to 20V input voltage to 0V to 5V for the ADC.
[[File:0084-pfet-vdiv-0.png]]
Although this technique will work fine, it will constantly discharge the voltage-device-to-measure a little bit through the resistors. At 12V the drain will be around 1.7mA. Even though this is not much, we want to limit this current drain as much as we can. Imagine a setup where a measurement is taken once per hour. The datalogger will be in sleep mode for 99.99% of the time and only wake up for a few ms to take a sample and then go back to sleep again. The above voltage divider will continue to drain the battery-under-test even when we're not taking samples. Ideally we want to 'disconnect' the voltage divider (between the V1 and R2) when the micro is in sleep mode. One way to do this is by using a FET (Field Effect Transistor) in series with the resistor voltage divider network.
{{Info
|info = ''
In this design I will be using FETs to connect and disconnect the voltage divider from the device under test.
To clear up some terminology I will be using the following terms in this document:
* DUT
The Device Under Test (dut), aka the DC voltage source we wish to measure. In most cases this will be a 12V battery,
but it could also be a single AA battery at 1.5V.
* FET
Field Effect Transistor. I will be using enhancement-mode FETs and they will either be P-Channel (pfet) or N-Channel (nfet) types.
* Conducting FET
When the FET is conducting I will often use the terms 'low impedance', 'on' and 'conducting' interchangeably.
* Non-Conducting FET
When the FET is not conducting I will often use the terms 'high impedance', 'off' and 'non-conducting' interchangeably.
* open vs close
The terms 'open' and 'close' are mostly avoided as it can be interpreted both ways when saying that a fet is open. Do we mean it is open-circuit and not conducting or open for current to flow?
''
}}
The idea is that we want to have a FET at high impedance during sleep mode and aim for minimal (preferably no) drain on the device under test.
Here are a few statements regarding a P-Channel FET:
* If the Gate and the Source are both at the same voltage, a P-ch fet does not conduct.
* The fet will (start to) conduct when the Source voltage is 'Vgs(th)' (a few volts) more positive than the Gate voltage.
* Lowering the Gate voltage will turn the fet on (and make it conducting). Alternatively, increasing the Source voltage has the same effect.
Let's walk through the following scenarios:
* pfet off (high impedance) when not taking ADC measurements
* pfet on (low impedance) when taking measurements
Let's say we have a pfet on the high side with the Source connected to 5V+, the Drain through a 4k7 + 2k2 resistor voltage
divider to Ground and the Gate held high by connecting it to a 100k pull-up resistor also to 5V+.
[[File:0084-pfet-vdiv-1.png]]
The difference between Source and Gate is practically 0V because they're both connected to +5V. A pfet with a Vgs(th) of around -3V will be in high-impedance mode. Therefore in the above schematic, the fet will be turned off and the voltage divider network will measure 0V. The drain on the DUT is very close to 0A, probably only a few nA.
So for a pfet we can say:
Vgate equals Vsource --> high impedance (aka 'disconnected')
Vgate a few volts below Vsource --> low impedance (aka 'conducts')
In the above schematic the ADC (the tap point that goes to the microcontroller to measure the voltage using the Analog-to-Digital Converter) will practically see 0V at any voltage because the pfet is always in high impedance. There will be almost no current drain on the Device Under Test (DUT, the voltage source such as a battery we wish to measure). This is exactly what we want when the microcontroller is not taking any measurements.
Next we need to find a way to bring the p-fet into a conducting state.
The easiest way is to bring the Gate to ground (0V). The difference between Vgate and Vsource will then be greater than Vgs(th) and Vsource will be more positive than Vgate. Doing so will turn the fet fully on, which is what we want to make use of the voltage divider network for ADC sampling.
Let's introduce a microcontroller that will have an OUTPUT port that can control a device (here shown as a 'switch') that can control whether the P-ch fet's Gate is connected to ground or not. If it is connected to ground the 100k resistor will draw a bit of current, but this is negligible for the short duration of sampling. If it is left floating, the Gate of the p-fet will go high to the Voltage of the DUT.
[[File:0084-pfet-vdiv-2.png]]
The question is, what kind of a device does this? In theory a mechanical relay could do the trick, but it has three main drawbacks: due to its mechanical nature it has a very limited lifespan (metal fatigue), over time the arcing of the contacts could cause the relay from working properly and lastly the coil to engage the magnetic field is not very efficient and draws several milli-amps.
The preferred solution is again a fet. This time however we'll use an N-Channel fet because we will be switching ground on and off.
INSERT: blurb about why fets and not bjts
Here is a proposed schematic that allows us to switch two fet's with with hardly any current and will have practically no current draw when the fets are turned off.
[[File:0084-pfet-vdiv-3.png]]
Here the OUT port of the microcontroller is simply a digital out that switches HIGH to 5V (supplied voltage from V2) or LOW to 0V. Setting these voltages to the gate of the N-ch fet (a common 2N7002) will cause it to respectively conduct or not. When the N-ch fet is conduciting (when supplied 5V) it will provide a path to ground for the Gate of the P-ch fet and we can take a sample from the voltage divider R3/R2 (the naming of the resistors may have changed with earlier schematics).
There is however one big problem with this setup.
The title of this section mentions that we wish to measure DC voltages from 0V to 20V. The current schematic will not be able to measure voltages lower than Vgs(th) than the P-ch fet is rated for.
Let's see why this is the case:
Here is a table that shows the various voltages of interest
===Table 1: on/off fet switching at 5V DUT===
{| class="wikitable"
|+FET Gate voltages
|-
|V2 (uC)
|V1 (DUT)
|Vg Nfet
|Nfet state
|Vs Pfet
|Vg Pfet
|diff Vgs Pfet
|Pfet state
|Comments
|-
|5.0
|5.0
|0.0
|not conducting
|5.0
|5.0
|< Vgs(th)
|not conducting
|uC Output LOW (0V), Resistor voltage-divider: OFF
|-
|5.0
|5.0
|5.0
|conducting
|5.0
|0.0
|> Vgs(th)
|conducting
|uC Output HIGH (5V), Resistor voltage-divider: ON
|}
This table shows how the various voltages change when the microcontroller sets the OUT line from LOW to HIGH.
For clarity I have added also the V1 and V2 sources, but it can be concluded that the maximum voltage the microcontroller can set on the OUT line is its Vcc voltage (i.e. 5V). Therefore, the Gate voltage on the N-Ch fet will never receive more than 5V. This is enough over overcome Vgs(th) on the N-ch fet as it's between Ground (0V) and the OUT HIGH (5V). We can conclude that Vg Nfet simply depends on whatever voltage is supplied to the micro by V2.
In a similar fashion it can also be concluded that Vs Pfet is simply the voltage on the Device under Test (V1).
Lastly (and this is the problem), in this arrangement Vg Pfet can only be set to 0V or 5V.
To show where the issue is, let's measure DUT voltages from 5V down to 0V in half-volt steps.
===Table 2: measuring 0-5V DUT===
This table uses a P-Ch FET with a Vgs(th) of around 2.35V. This means that when the voltage on Vg comes to within 2.35V of Vs the fet will stop conducting (assuming that Vs is always equal to or greater than Vg). Watch the column showing the difference between Vg and Vs and it will become clear what is happening.
{| class="wikitable"
|+FET Gate voltages with DUT voltages between 0 - 5V
|-
|V2 (uC)
|V1 (DUT)
|Vg Nfet
|Nfet state
|Vs Pfet
|Vg Pfet
|diff Vgs Pfet
|Pfet state
|Comments
|-
|5.0
|5.0
|5.0
|conducting
|5.0
|0.0
|> Vgs(th)
|conducting
|uC Output HIGH (5V), Difference Vgs(th) way greater than 2.35V, all good
|-
|5.0
|4.5
|5.0
|conducting
|4.5
|0.0
|> Vgs(th)
|conducting
|Diff Vgs(th) around 4.5V, all good
|-
|5.0
|4.0
|5.0
|conducting
|4.0
|0.0
|> Vgs(th)
|conducting
|Diff Vgs(th) around 4.0V, all good
|-
|5.0
|3.5
|5.0
|conducting
|3.5
|0.0
|> Vgs(th)
|conducting
|Diff Vgs(th) around 3.5V, all good
|-
|5.0
|3.0
|5.0
|conducting
|3.0
|0.0
|> Vgs(th)
|conducting
|Diff Vgs(th) around 3.0V, barey conducting
|-
|5.0
|2.5
|5.0
|conducting
|2.5
|0.0
|~ Vgs(th)
|half conducting
|Diff Vgs(th) around 2.5V, linear region, pfet is going high impedance
|-
|5.0
|2.0
|5.0
|conducting
|2.0
|0.0
|< Vgs(th)
|not conducting
|Diff Vgs(th) around 2.0V, pfet is high impedance, voltage to ADC is now 0V
|-
|5.0
|1.5
|5.0
|conducting
|1.5
|0.0
|< Vgs(th)
|not conducting
|Diff Vgs(th) around 1.5V, pfet is high impedance, voltage to ADC is now 0V
|-
|5.0
|1.0
|5.0
|conducting
|1.0
|0.0
|< Vgs(th)
|not conducting
|Diff Vgs(th) around 1.0V, pfet is high impedance, voltage to ADC is now 0V
|-
|5.0
|0.5
|5.0
|conducting
|0.5
|0.0
|< Vgs(th)
|not conducting
|Diff Vgs(th) around 0.5V, pfet is high impedance, voltage to ADC is now 0V
|}
To illustrate this in a graph, here is a plot of two lines. The green line is the DUT voltage and the blue line is the voltage measured at the ADC tap point.
[[File:0084-pfet-vdiv-4.png]]
x-axis: DUT voltage, y-axis: ADC voltage
Follow the ADC trace (blue line) from right-to-left and notice that for a DUT (green line) above 2.5V the ADC connected to the voltage-divider is able to get a proper reading, but as soon as the DUT voltage goes below 2.5V the pfet cannot open anymore and the voltage divider never gets connected to the DUT.
It now becomes obvious that the pfet is ineffective when the difference between Vs and Vg is less than Vgs(th).
So how can we measure DUT voltages between 0V - 2.5V ?
Remember that the issue is that the difference between DUT voltage and 0V is less than Vgs(th)? If we can't increase the DUT voltage, why not go lower than 0V? A negative voltage.
===Negative bias to the P-FET===
Let's see what our results look like if we just look at providing -3V at the Gate of the pfet.
[[File:0084-pfet-vdiv-5.png]]
All the way down to 0V a perfect slope on the ADC tap point. This proves that providing a negative voltage will work.
There are few simple techniques that can achieve this. If we pulse-charge a capacitor, prevent power going in the positive direction and provide a discharge path other than to ground we can get a pulsing negative voltage. With two caps and two diodes we can easily get to -4.7V which will be enough to properly 'close' the P-Channel FET for measurements close to (and even a bit below) 0V. (another technique uses a bootstrap capacitor but we won't go into that here, for more information locate AN-6076.pdf at https://www.fairchildsemi.com/application-notes/AN/AN-6076.pdf)
Since we're already using a microcontroller for ADC sampling it becomes a fairly easy job to generate the required pulses.
Here is a schematic using a similar technique to provide an LCD Bias Voltage when driving the LCD at lower voltages. The application is different but the idea is perfectly usable for our project.
[[File:Charge-pump-based-negative-voltage-gen.png]]
Commercial products are also available, like the CAT661 from OnSemi ( http://www.onsemi.com/pub_link/Collateral/CAT661-D.PDF ). We're just going to build our own using the PWM feature from the microcontroller.
Here is the final schematic of the voltage-divider ADC sampling section including the FETs that turn everything on and off.
[[File:0084-pfet-vdiv-6.png]]
* The PWM ranges from 0 - 5V and has a duty cycle of 50%. It can be seen on the light-blue trace.
* The negative voltage generated is about -3V and can be seen on the red trace.
* The DUT voltage is plotted in the green trace
* The ADC tap point is in dark-blue
As you can see, all the way down to 0V do we have a useful voltage at the ADC sampling point.
Turning the PWM off will bring the N-Ch fet Gate and the Source to 0V potential and seen from the Drain it will be high impedance. The pull-up resistor between Gate and Source on the P-Ch fet causes the Gate to float up to DUT voltage. This makes the P-Ch fet non-conducting.
===basic information through LCD module===
The handheld enclosure defines the maximum size of an information display. I have used several 2x16 character LCD modules and their setup is now very familiar to me.
[[File:SD1602G2.jpg]]
Without backlight the LCD will have a current draw of around 25mA. This doesn't seem much but running on batteries it could run them flat in about 120 hours (5 days) of constant use. Great for short-term projects where the device is running off USB or switched on for short periods at a time but not ideal for a measurement task that could last a week. There will be some pushbuttons underneath the LCD to navigate to some sort of setup menu. This menu should allow the user to select a sampling interval and maybe some other parameters (e.g. LCD sleep timeout, data export, wipe memory, etc..)
===able to set accurate sampling times (e.g. every n second(s), minute(s), hour(s), day(s))===
The ATtiny mcu can do sleep modes just fine but the waking process isn't accurate in it's timing. Initially I used a watchdog-timer to wake up the t84 at intervals, but it turns out these intervals are depending on internal clock speed and without a crystal they can be very inaccurate. I decided not to use an external crystal for the mcu as it still didn't allow me to accurately time wake-up events without a constantly proces of waking up the mcu, checking a counter, go back to sleep.
After finding a low-power RTC (RealTime Clock) that can be controlled over I2C and draws only 5uA I knew I had something I could work with. The component I'm keen to use for this application is the Intersil ISL1218.
[[File:Isl1218.jpg]]
[[File:ISL1208.pdf]]
The device can be set to a certain time (say, 1 hour from now) and send an interrupt to the mcu to wake it up to do a measurement. The RTC only needs an external crystal to work.
It also caters for a backup battery (in the scenario where you can replace the 2x AA batteries in between measurements and have the datalogger perform the next measurement exactly on time as if nothing ever happened. I am not planning on using this feature but it is nice to know.
===store measurements in the device===
Voltage samples that are taken should be stored-and-retrieved using on-board non-volatile memory. EEPROM with an I2C interface is the preferred choice here. This means it doesn't take up any extra pins on the micro and it can just sit on I2C bus. Devices like the 24LC512 can store 64kBytes of data and are very low power (less than 1uA) when idle.
[[File:24LC512.jpg]]
At some point I may even wish to expand this feature to make use of a micro-SD card. These cards hold lots of storage and can be interfaced using SPI.
===extract measurement data through USB connection to a PC===
A micro-USB port on the device allows interfacing with a PC or laptop to retrieve measurement data. A third-party USB-to-UART module will be used to deal with the USB side to the PC and once connected it will spit out data at a rate of stock-standard 9600 baud 8-N-1. A simple serial terminal program (e.g. hyperterm, minicom) will receive the data once the micro receives an input character.
==Phase 2 selecting parts==
To put it all together I had to make a few decisions that determines some minimum and maximum values as well as what features are going to be incorporated in the final design.
===POWER===
* battery power
2x AA NiMH or Alkaline batteries in series. This will provide between 2.0V and 3.0V.
* battery charging
Battery charging to be done through USB 5V power lines, assuming a maximum capacity of 500mA. I'm planning on using 2800mAh NiMH batteries, giving a maximum of 17% C. This is well below the maximum charge rate so we're very much on the safe side. In the final design I doubt that we will be even getting 500mA as we need to step down to about 3.5V as the maximum voltage across a single AA NiMH cell is about 1.7V.
* running off USB power over battery power when USB is plugged in.
A simple Power-OR'ing circuit using a single P-Channel FET is used to switch between the battery and USB power. When USB is plugged in it will automatically start the battery charging circuit.
* internal power levels
Most components can be used at voltages between 2.7V - 5.5V. I decided to run at 5V as it gives a workable Vgs threshold with FETs to turn on and off. To get to 5V off the batteries I will be using a very small DC-to-DC Boost Converter from Linear Technologies, the LTC3525. The battery charger circuit will run off the USB port 5V power lines as we want it to be completely separate to our datalogger circuit. It is essentially switched of when USB is not connected.
NOTE:
For versions of this or other projects where a small DC/DC boost converter is required I found the following other parts that deserve further investigation:
[Power Management - Switching Regulators - Step Up (Boost) Regulator]
* Texas Instruments: TPS61222(-EP), TLV61220, TPS61220, LM8850
* Semtech: SC4502, SC4505
* Maxim Integrated: MAX1722, MAX1723, MAX1724, MAX1834
Running directly off the batteries are:
- LTC3525 5.0V boost converter
The devices that will be running on the 5V produced by the boost converter are:
- main ATtiny84 'brains' of the datalogger
- ISL1218 Real Time Clock
- Microchip 24LC512 EEPROM
- Voltage sampling FETs
- SD1602G2_2x16LCD module, ATtiny85, 74HC595 shift register
Running of USB when attached:
- UART to USB module
- ATtiny85(?) NiMH battery charger and associated components
===LCD Module===
I have used the basic 2x16 LCD modules a few times in other projects and with an additional two components (an ATtiny85 and a 74HC595 serial shift register) I am able to drive it over I2C. The current draw is not super-low but it is a very versatile addition to the project and with a simple FET switching it on and off I can just put it to sleep or wake up whenever I need to. At this stage there is no need to graphically display a voltage curve, I rely on post-processing of the exported data using something like an electronic spreadsheet or so. Therefore the requirements for the LCD module is only to display text. I will provide two pushbuttons near the LCD to interact with an on-screen menu system to set certain variables. The size of the LCD module determines for a large part the 'smallness' of the design. The module I will be using is the SD1602G2.
===PC RS-232 interfacing===
These days very simple USB-to-UART converter boards are available on eBay. Instead of rolling my own I will be using a pre-made module to communicate over RS-232.
[[File:CP2102.jpg]] CP2102-based TTL to UART over USB adapter
When connected to USB these devices will present a COM-port over USB for which drivers are either already on the system or very easily obtained. Since a variety of other devices use these drivers the chances are you may already have the drivers on your system. To keep things reasonably robust I will limit the transfer speed to 9600 baud. This is more than adequate for exporting the EEPROM memory over RS-232 in a few seconds. Speed is not essential here.
Resources:
* CP2102 Drivers for Windows XP/Server 2003/Vista/7/8/8.1 (v6.7)
[[File:CP210x VCP Windows.zip]]
===Sampling Speed and Interval===
===Minimum Current Draw===
==Phase 3 Design of Schematics and Circuit board==
Final schematic of v1.0 of the datalogger design. The board dimensions (8.6cm x 6.3cm) are based on a plastic Remote Control enclosure, Jaycar PartNr: HB5610
Schematic v1.0 of the datalogger
[[File:0084-v1.0-sch.jpg|none|thumb|200px]]
Schematic v1.0 in PDF format:
[[File:0084-v1.0-sch.pdf]]
[[File:0084-v1.0-pcb top.jpg|none|thumb|200px]]
Circuit Board top view
Version 1.0 of the schematics and PCB done in Diptrace
[[File:0084-voltage-datalogger-v1.0.zip]]
==Phase 4 Assembly of parts and testing ==
These are some first images of the very first unit fully assembled.
[[File:0084-v1.0-final.jpg|none|thumb|200px]]
[[File:0084-v1.0-inside top.jpg|none|thumb|200px]]
[[File:0084-v1.0-topview.jpg|none|thumb|200px]]
[[File:0084-v1.0-detail1.jpg|none|thumb|200px]]
==Phase 5 Datalogger Results==
With the device fully assembled and tested the initial results are quite promising.
[[File:0084-graph-1Ah-discharge-and-charge.png]]
This graph shows the discharge and recharge of a 12V 1Ah SLA battery. The discharge is through a 15 Ohm resistor. Recharging was done by a relatively cheap battery charger. It shows that the battery lasted for about an hour and a half and the recharging took about an hour. Sample interval: once every 5 seconds. Each time interval is 1 hour.
[[File:Powertech-MB-3526.jpg|none|thumb|100px]]
[[File:0084-graph-car-starting.png]]
This graph shows the voltage of my car's battery when starting it. You can see the individual compression cycles and the alternator taking over raising the voltage when the engine is running. Sample interval: about 20ms. Each time interval is 1 second.
[[File:0084-graph-solar-charge-controller.png]]
This graph shows my solar charge controller on a mostly overcast day. Interesting to see how the battery is kept topped up during the day. The solar panel goes into the shade fairly quickly so you're only seeing about 3 hours worth of power generation.
[[File:Powertech MP3129 solar-charge-controller.jpg|none|thumb|200px]]
So we know it uses around 35uA in sleep mode, but in practice, how long can I run the datalogger on two AA batteries for?
I decided to set up one unit to do a self-monitoring test, sampling the datalogger's own power supply, the two AA batteries. I put in two (probably not fully charged) NiMH batteries and set the sampling interval at once every 60 seconds. The idea is to let it run for about three weeks and then see what the battery voltage goes down to.
This is the result:
[[File:0084-self-sampling-21days.png]]
The starting voltage of the 2x AA NiMH batteries in series was around 2.73V and over time went down to around 2.61V. Several sources on the net mention that AA NiMH batteries are considered empty (without risking too much damage to the battery) at around 0.8V - 0.9V. Given the above data it seems we could be running the datalogger for many months!
It confirms that in the three areas where I wasn't entirely sure how much power was being used there is no immediate need to further improve power consumption.
* the resistor-voltage-divider network to measure the DUT's (device-under-test) voltage isn't significantly draining the DUT's battery.
* the overall board's power consumption (using boost converters, microcontrollers and realtime clocks in sleep or idle mode) while running normally isn't significantly draining the datalogger's batteries.
* the current configuration of waking up every second (interrupt from RTC) and comparing a sample ticks overflow counter isn't significantly draining the datalogger's batteries.
The above graph doesn't even show the self-discharge of the NiMH batteries which is adding additional kindness to the results.
My next test will be to run the datalogger for a few months. I will get 4 AA Alkaline batteries from the same pack (measure them to be sure they're the same voltage) and then put two in the datalogger and leave two next to it. That way I can confirm self-discharge as well.
8fbcd9892a9caacf2b7e0664e8ae508ad11ea9cd
File:0137 schematic v1.0.png
6
784
3121
2019-06-16T02:49:07Z
Admin
1
battery charge controller
wikitext
text/x-wiki
== Summary ==
battery charge controller
bae08cc3d18e72dd0c31b2a8faca4f5eaf33c01f
File:0137 prototype.jpg
6
785
3128
2019-07-22T22:48:52Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0137 SLA-battery-charger pcb v1.0.jpg
6
786
3130
2019-07-23T22:37:44Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Syncthing-share
0
787
3165
3164
2019-11-01T22:23:40Z
Admin
1
wikitext
text/x-wiki
This article shows how to set up a basic Syncthing share.
Features:
* Synchronise between Linux and Windows hosts
* Uses Samba on Linux to cater for additional hosts that cannot run Syncthing
* Operates as replicate-with-delete (files deleted from one share will automatically be deleted on the other share, just like a normal shared folder)
So let's get started:
===Samba setup===
<pre>
apt-get install samba syncthing
</pre>
Because samba runs on Linux it's easier to manage samba user accounts when these users also exist as local users on the Linux system.
Furthermore, to apply permissions to all samba users in one go it is easier to create a linux group as well.
<pre>
groupadd samba-users
</pre>
* mkdir /home/samba
* mkdir /home/samba/share
* chgrp samba-users /home/samba/share
* chmod 775 /home/samba/share
* mkdir /home/samba/syncthing
* chgrp samba-users /home/samba/syncthing
* chmod 775 /home/samba/syncthing
Add the user accounts you'll need for your samba server:
<pre>
adduser --gecos joe
(+ enter new password)
</pre>
Add the users to the samba-users group:
<pre>
adduser joe samba-users
</pre>
Create the samba users:
<pre>
smbpasswd -a joe
(+ enter same password as in linux)
</pre>
* edit /etc/samba/smb.conf
at the end of the file, add these lines:
<pre>
[syncthing]
comment = Samba Share
path = /home/syncthing/samba
browseable = yes
read only = no
guest ok = no
valid users = @samba-users
force user = syncthing
force group = samba-users
create mask = 0664
directory mask = 0775
</pre>
You can now browse to \\<ip-address>\ with windows explorer where you will see the 'share' folder. Double-click on it and you will be presented with a login window, asking for credentials. Enter your user name and the password and you are now able to use the share for reading, writing and deleting files.
===Syncthing Setup===
By default, Syncthing will publish the host's unique Device ID to the global Syncthing servers on the Internet. As we'll see further down, this feature will make discovery and connection to hosts behind routers a breeze.
First, let's set up the user process to run syncthing.
* create syncthing system account and home directory
<pre>
useradd -r syncthing -m -d /home/syncthing
usermod -g samba-users syncthing
</pre>
* enable syncthing to run as a service (unit file in /lib/systemd/system/)
<pre>
systemctl enable syncthing@syncthing.service
systemctl start syncthing@syncthing.service
</pre>
Syncthing is now running and the web admin console can be reached from http://localhost:8384/. However if we want to remotely access this web console we need to configure a reverse proxy for it.
===Setting up a reverse proxy with Nginx===
* install nginx
<pre>
apt-get install nginx
</pre>
write an nginx website configuration file for syncthing
<pre>
vi /etc/nginx/conf.d/syncthing.conf
===
server {
listen 80;
server_name 10.0.0.23;
root /var/www/html/syncthing/;
access_log /var/log/nginx/syncthing.log;
error_log /var/log/nginx/syncthing.error.log;
location / {
proxy_set_header Host localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8384;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
===
</pre>
Create the placeholder directory and restart nginx
<pre>
mkdir /var/www/html/syncthing
systemctl reload nginx
</pre>
Now browse from another computer to the syncthing system with the address: http://<remoteip>/ ..and you should see the Syncthing admin console website.
The site will probably alert you that no password has been set, so do this first.
===Creating Syncthing folders===
Now that syncthing is running and we can comfortably access the admin console from a remote machine we can now set up the various shares and configure how we want to use them.
First a little Syncthing terminology:
<b>Folders</b> -- These are local folders that are available to the machine that is running the Syncthing service (i.e. the machine that is hosting the Syncthing admin console website that we are currently viewing). These folders may or may not be shared with other machines that are running Syncthing.
<b>This Device</b> -- Details and statistics about the machine that is hosting this admin console website and Syncthing services.
<b>Remote Devices</b> -- Other Syncthing instances on other machines that we are synchronising shared folders to or from.
Our goal is to have a Syncthing folder structure that will allow us to:
* synchronise folders with other machines running syncthing
* navigate to the Syncthing folders from Windows and Linux
We have now created the foundation to make this happen, all we need to do now is to create the folders and configure how we wish to share them.
===Sharing folders===
Before any file or directory synchronisation happens, we need to introduce Syncthing hosts to each other. We do this by importing their unique Device ID.
Again, before we can fully grasp the Syncthing philosophy we need to understand a few more concepts:
<b>Introducer</b> -- Any devices configured on an introducer device will be added to this device as well.
This is an option when manually importing or when automatically being presented with the import of another Syncthing host's Device ID. What this means is that any other remote hosts that the host we're about to add knows about, will also be added to the list of remote devices on this host. This is particularly useful if you're adding a host that already knows about a lot of other hosts that you will be seeking connections with. You will still need to request (or be given) access to shared folders, but the first step in finding out which hosts you need to contact is taken care of.
<b>Send and Receive</b> --
<b>Send Only</b> --
<b>Receive Only</b> --
We must also set some linux file permissions, so that new files placed in the shared directories outside of samba will inherit the correct owner and permissions
Once you have created a new Syncthing folder from the web gui, enter for every new parent folder:
<pre>
apt-get install acl
chmod g+s <newfolder>
setfacl -Rm g:samba-users:rwX <newfolder>
setfacl -d -Rm g:samba-users:rwX <newfolder>
</pre>
All files and subdirectories will now inherit
* 775 syncthing:samba-users permissions on each new directory
* 664 <user>:samba-users permissions on each new file
This is sufficient to make synching do its work with other peers without losing write access to files.
When you add a new Remote Device by importing its Device ID you will not see anything happen until the remote device will accept the connection. Navigate to the Syncthing admin console of the host you added and log in. At the top of the page you should see a 'New Device' alert for the host that just imported the Device ID. Click on Add Device to accept the incoming connection.
Here is how the process flows, step by step:
<pre>
Syntching Host A Syncthing Host B
---------------- ----------------
set up Syncthing set up Syncthing
set up reverse proxy set up reverse proxy
(if we don't have localhost www access) (if we don't have localhost www access)
connect to the Syncthing admin console
copy the Device ID string
connect to the Syncthing admin console
Click 'Add Remote Device'
import Device ID from Host A
(Hostname A will show as 'unused')
connect to the Syncthing admin console
Accept the incoming request from Host B
Select locally shared folders you wish
to allow Host B to have access to
connect to the Syncthing admin console
Accept the shared folder(s) from Host A
Set a location on the local machine where
the shared folder(s) can be written to.
Optionally, include other remote hosts you
wish to introduce to Host A's folder(s).
This will trigger another import-accept run
for each of these hosts.
</pre>
The initial communication between these hosts happens largely over the Internet. However, once these hosts exchange their ip addresses they will be able to communicate directly. Initially joining hosts could take a few minutes to process, so please be patient if you don't see any activity after requesting to join a new host or shared folder. There is no need to refresh the page as it will auto-reload to show any notifications.
A useful indicator is to watch the Syncthing thumbnail icon in browser tab, as it will show an exclamation point if there is new activity on that page.
35225ed720e658bbde07b75f5408185c778724cd
ATtiny84 WDT sleep
0
502
3166
2142
2019-11-04T10:55:59Z
Admin
1
wikitext
text/x-wiki
The following code puts the ATtiny84 into sleep mode and it is woken up by an overflow of the Watchdog Timer (WDT). It should be compatible with the ATtiny85 series. Note that disabling the ADC functions (ADC and Comparator) are probably in different registers (e.g. ADCSRA or ADCSRB).
<pre>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
// these define cbi and sbi, for as far they are not known yet
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
void setup_watchdog(int ii)
{
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
uint8_t bb;
if (ii > 9 ) ii=9;
bb=ii & 7;
if (ii > 7) bb|= (1<<5);
bb|= (1<<WDCE);
MCUSR &= ~(1<<WDRF);
// start timed sequence
WDTCSR |= (1<<WDCE) | (1<<WDE);
// set new watchdog timeout value
WDTCSR = bb;
WDTCSR |= _BV(WDIE);
}
// system wakes up when watchdog is timed out
void system_sleep()
{
cbi(ADCSRA,ADEN); // switch Analog to Digitalconverter OFF
setup_watchdog(9); // approximately 8 seconds sleep
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable();
sei(); // Enable the Interrupts so the wdt can wake us up
sleep_mode(); // System sleeps here
sleep_disable(); // System continues execution here when watchdog timed out
sbi(ADCSRA,ADEN); // switch Analog to Digitalconverter ON
}
int main( void )
{
while ( 1 )
{
<your code goes here>
<your code goes here>
<your code goes here>
system_sleep(); // start power down sequence
}
return 0;
}
// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect)
{
// nothing here
}
</pre>
d2f51f81753de43c98ecb5ce920b3f5150ce95e3
ATtiny85 WDT sleep
0
788
3169
3168
2019-11-04T10:59:42Z
Admin
1
wikitext
text/x-wiki
The following code puts the ATtiny85 into sleep mode and it is woken up by an overflow of the Watchdog Timer (WDT). It should be largely compatible with the ATtiny84 series, although you may get an error about WDTC(S)R. Note that disabling the ADC functions (ADC and Comparator) are probably in different registers (e.g. ADCSRA or ADCSRB).
<pre>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
// these define cbi and sbi, for as far they are not known yet
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
void setup_watchdog(int ii)
{
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
uint8_t bb;
if (ii > 9 ) ii=9;
bb=ii & 7;
if (ii > 7) bb|= (1<<5);
bb|= (1<<WDCE);
MCUSR &= ~(1<<WDRF);
// start timed sequence
WDTCR |= (1<<WDCE) | (1<<WDE);
// set new watchdog timeout value
WDTCR = bb;
WDTCR |= _BV(WDIE);
}
// system wakes up when watchdog is timed out
void system_sleep()
{
cbi(ADCSRA,ADEN); // switch Analog to Digitalconverter OFF
setup_watchdog(9); // approximately 8 seconds sleep
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable();
sei(); // Enable the Interrupts so the wdt can wake us up
sleep_mode(); // System sleeps here
sleep_disable(); // System continues execution here when watchdog timed out
sbi(ADCSRA,ADEN); // switch Analog to Digitalconverter ON
}
int main( void )
{
while ( 1 )
{
<your code goes here>
<your code goes here>
<your code goes here>
system_sleep(); // start power down sequence
}
return 0;
}
// Watchdog Interrupt Service / is executed when watchdog timed out
ISR(WDT_vect)
{
// nothing here
}
</pre>
fe7e8759ae35c1b9e38b1c14a678633030a7578a
File:Free-julian.jpeg
6
789
3170
2019-11-10T05:20:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
QCX-transceiver
0
790
3178
3177
2019-11-11T20:55:17Z
Admin
1
wikitext
text/x-wiki
* product website: https://www.qrp-labs.com/qcx.html
* forum: https://groups.io/g/QRPLabs
Firmware upgrade process:
Platform: Windows 10
Programmer: Sparkfun AVR Pocket Programmer
722f047ea8b6d257dd6df8e44cbd60795a5fb0dc
File:Banner1.png
6
792
3182
2019-11-11T21:46:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Linux Bash
0
74
3200
3194
2019-11-12T04:43:01Z
Admin
1
wikitext
text/x-wiki
useful Bash scripts:
[[worklog]]
[[dirsync]]
[[dos2unix]]
[[unix2dos]]
[[wifi-startstop]]
[[copy-rootfs]]
[[dd-mount-tar]]
[[miscellaneous-linux-info]]
[[bombs]]
a5bd258612ff22181646ff754e641ff8b23e3aee
MediaWiki:Sitenotice
8
793
3202
3201
2019-11-12T04:44:08Z
Admin
1
Replaced content with "-"
wikitext
text/x-wiki
-
3bc15c8aae3e4124dd409035f32ea2fd6835efc9
Tips n Tricks
0
177
3204
3203
2019-11-17T04:19:07Z
Admin
1
wikitext
text/x-wiki
Here's a compilation of various tips and tricks I came across over the years. Feel free to use and re-use as much as you like.
==set, clear and toggle macros==
With AVR micros an often cryptic method is used to set, clear or toggle bits. Take for instance the following example to set a digital port to output and set it to a digital '1'.
<pre>
#DEFINE LEDPIN PB0 // define LED pin
DDRB |= (1 << LEDPIN); // set to output
PORTB |= (1 << LEDPIN); // write a digital '1'
</pre>
With these macros writing a digital '1' is now as simple as:
<pre>
// Some helper MACROS
#define SET |=
#define CLR &=~
#define TOG ^=
#DEFINE LEDPIN PB0 // define LED pin
DDRB SET (1 << LEDPIN); // set to output
PORTB SET (1 << LEDPIN); // write a digital '1'
</pre>
==bitwise operations==
Similar to the above, here are some commands to set, clear or toggle a specific bit:
* set (to 1) bit 2 (the third bit from the right) of variable a
<pre>
a |= (1<<2);
</pre>
* clear (to 0) bit 2 (the third bit from the right) of variable a
<pre>
a &= ~(1<<2);
</pre>
* toggle bit 2 (the third bit from the right) of variable a
<pre>
a ^= (1<<2);
</pre>
Below is a set of macros that works with ANSI C to do bit operations:
<pre>
#define bit_get(p,m) ((p) & (m))
#define bit_set(p,m) ((p) |= (m))
#define bit_clear(p,m) ((p) &= ~(m))
#define bit_flip(p,m) ((p) ^= (m))
#define bit_write(c,p,m) (c ? bit_set(p,m) : bit_clear(p,m))
#define BIT(x) (0x01 << (x))
#define LONGBIT(x) ((unsigned long)0x00000001 << (x))
</pre>
==byte type==
In some programming environments the 'byte' type is readily available. It's usually just an unsigned char but if you don't want to search-and-replace every instance of byte with unsigned char in your code then here's a simple type definition that creates the byte type.
<pre>
typedef unsigned char byte; //create byte type
</pre>
==rounding and decimals==
Float values sometimes have too many decimals. Here are some generic rounding formulas:
<pre>
fl = (int) (fl + 0.5f)/1.0f; // round to 0 decimals
fl = (int) (fl * 10 + 0.5f)/10.0f; // round to 1 decimals
fl = (int) (fl * 100 + 0.5f)/100.0f; // round to 2 decimals
</pre>
==AVR Sleep Mode==
A recent project I built using an ATtiny85 micro was working fine and using about 4mA in idle mode. The circuit and its peripherals were powered through a 78L05 so I was wondering by how much I could lower the current draw by using the sleep function of the micro.
Here's how I configured sleep mode to bring the current draw down to 2.4mA. This suggests that the voltage regulator still takes some energy to run at very low levels..
The technique below uses the expiry of the on-board watchdog timer to generate an interrupt which wakes the micro.
Step 1 - import the sleep, watchdog and interrupt libraries
Location: at the top of your code
<pre>
#include <avr/sleep.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
</pre>
Step 2 - add some helper functions
Location: above the main() block
<pre>
/* NOTES:
ATtiny85 ATtiny84
Watchdog Timer Register: WDTCR WDTCSR
*/
void wdtEnable(void)
{
wdt_reset();
cli();
MCUSR = 0x00;
WDTCR |= _BV(WDCE) | _BV(WDE);
WDTCR = _BV(WDIE) | _BV(WDP2); // 250ms
sei();
}
//disable the wdt
void wdtDisable(void)
{
wdt_reset();
cli();
MCUSR = 0x00;
WDTCR |= _BV(WDCE) | _BV(WDE);
WDTCR = 0x00;
sei();
}
void system_sleep()
{
ACSR |= _BV(ACD); //disable the analog comparator
ADCSRA &= ~_BV(ADEN); //disable ADC
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
wdtEnable(); //start the WDT
//turn off the brown-out detector.
//must have an ATtiny45 or ATtiny85 rev C or later for software to be able to disable the BOD.
//current while sleeping will be <0.5uA if BOD is disabled, <25uA if not.
cli();
mcucr1 = MCUCR | _BV(BODS) | _BV(BODSE); //turn off the brown-out detector
mcucr2 = mcucr1 & ~_BV(BODSE);
MCUCR = mcucr1;
MCUCR = mcucr2;
sei(); //ensure interrupts enabled so we can wake up again
sleep_cpu(); //go to sleep
//----zzzz----zzzz----zzzz----zzzz
cli(); //wake up here, disable interrupts
sleep_disable();
wdtDisable(); //don't need the watchdog while we're awake
sei(); //enable interrupts again (but INT0 is disabled above)
}
// insert the ISR function outside the main() loop, all the way at the bottom of the code
ISR(WDT_vect) {} //don't need to do anything here when the WDT wakes the MCU
</pre>
Step 3 - insert code to configure the sleep/watchdog registers once at startup
Location: at the top of the main() block
<pre>
wdt_reset();
wdtDisable();
</pre>
Step 4 - add your sleep command at the idle position(s)
Location: normaly where you would have a delay at the end of a loop in main()
<pre>
system_sleep();
</pre>
Step 5 - disable BOD in the command to flash the code to the micro or in software (not all models supported!)
<pre>
-U hfuse:w:0xDF:m
</pre>
==custom functions and libraries==
Here's a simple function that makes it easy to blink out a value. Handy if you only have one LED as a means for feedback.
<pre>
// With this code, a value like 302 is blinked as:
//
// <short> <short> <short> <long> <short> <short>
void shortblink(uint8_t ledpin)
{
digitalWrite(ledpin,HIGH);
_delay_ms(50);
digitalWrite(ledpin,LOW);
_delay_ms(500);
}
void longblink(uint8_t ledpin)
{
digitalWrite(ledpin,HIGH);
_delay_ms(600);
digitalWrite(ledpin,LOW);
_delay_ms(500);
}
void numberblink(uint16_t value, uint8_t ledpin)
{
// blinks a number (from 0 - 65535) to a LED
uint16_t divisor = 10000;
uint8_t blinked=0;
while (divisor >= 10)
{
if (value > divisor)
{
// do some blinking
while (value >= divisor)
{
shortblink(ledpin);
blinked=1;
if (value >= divisor)
value = value - divisor;
}
} else {
// value is less than divisor, probably encountered a (middle) zero
// blink long if we've blinked before
if (blinked == 1)
longblink(ledpin);
}
_delay_ms(1000);
divisor = divisor / 10;
}
if (value == 0)
{
// always long blink last zero
longblink(ledpin);
} else {
while (0 < value)
{
// blink ones
shortblink(ledpin);
value=value-1;
}
}
}
</pre>
c09710ada7c5b7200882639701450696b915ede9
ATtiny85 ADC
0
175
3205
2744
2019-11-17T04:34:35Z
Admin
1
wikitext
text/x-wiki
This page provides a copy-and-paste working example of using the ADC (Analog-to-Digital Converter) in an Atmel ATtiny85 8-bit microcontroller.
With minimal adjustments this code should work on microcontrollers from the same family (such as the ATtiny25, ATtiny45, ATtiny24, ATtiny44 and ATiny84).
[[File:Attiny85 pinout.png]] [[File:Atmel-logo1.png]]
The main thing you will need to find out for your own microcontroller is the clock speed, as it determines the ADC sample rate. The ADC sample rate for this mcu needs to be between 50 - 200kHz and can be adjusted to fall within this range by means of setting the Prescaler bits in the ADCSRA register.
Example #1 code:
* assumes a clock speed of 8MHz on an ATtiny85
* uses 8-bit resolution (values from 0-255)
* uses ADC2 on pin PB4
* uses VCC as the reference voltage
<pre>
void initADC()
{
/* this function initialises the ADC
ADC Prescaler Notes:
--------------------
ADC Prescaler needs to be set so that the ADC input frequency is between 50 - 200kHz.
For more information, see table 17.5 "ADC Prescaler Selections" in
chapter 17.13.2 "ADCSRA – ADC Control and Status Register A"
(pages 140 and 141 on the complete ATtiny25/45/85 datasheet, Rev. 2586M–AVR–07/10)
Valid prescaler values for various clock speeds
Clock Available prescaler values
---------------------------------------
1 MHz 8 (125kHz), 16 (62.5kHz)
4 MHz 32 (125kHz), 64 (62.5kHz)
8 MHz 64 (125kHz), 128 (62.5kHz)
16 MHz 128 (125kHz)
Below example set prescaler to 128 for mcu running at 8MHz
(check the datasheet for the proper bit values to set the prescaler)
*/
// 8-bit resolution
// set ADLAR to 1 to enable the Left-shift result (only bits ADC9..ADC2 are available)
// then, only reading ADCH is sufficient for 8-bit results (256 values)
ADMUX =
(1 << ADLAR) | // left shift result
(0 << REFS1) | // Sets ref. voltage to VCC, bit 1
(0 << REFS0) | // Sets ref. voltage to VCC, bit 0
(0 << MUX3) | // use ADC2 for input (PB4), MUX bit 3
(0 << MUX2) | // use ADC2 for input (PB4), MUX bit 2
(1 << MUX1) | // use ADC2 for input (PB4), MUX bit 1
(0 << MUX0); // use ADC2 for input (PB4), MUX bit 0
ADCSRA =
(1 << ADEN) | // Enable ADC
(1 << ADPS2) | // set prescaler to 64, bit 2
(1 << ADPS1) | // set prescaler to 64, bit 1
(0 << ADPS0); // set prescaler to 64, bit 0
}
int main(void)
{
initADC();
while(1)
{
ADCSRA |= (1 << ADSC); // start ADC measurement
while (ADCSRA & (1 << ADSC) ); // wait till conversion complete
if (ADCH > 128)
{
// ADC input voltage is more than half of VCC
} else {
// ADC input voltage is less than half of VCC
}
}
return 0;
}
</pre>
===Reference Voltage===
The reference voltage determines the upper limit of the ADC range. For example, if the ATtiny85 is powered with 5V and the ADC is configured to use Vcc as the reference voltage then the ADC is able to convert an (analogue) voltage between 0V and 5V. Within the whole range between 0V to 5V it is able to sample any voltage and convert that to an 8-bit (256 values) or 10-bit (1024 values) integer number. So if you were to provide 2.0V on pin PB4 you would get a value of 102 in 8-bit sampling (or 410 in 10-bit sampling).
According to the datasheet you can power your ATtiny85 from 1.8V to 5.5V (depending on frequency and model used). Specifying VCC as the reference voltage will then lead to a varying conversion value. For instance, powering your micro with 3.3V and putting the same 2.0V on PB4 will now result in a value of 155 in 8-bit sampling (or 621 in 10-bit sampling).
There is a simple provision in the ATtiny85 to make the varying VCC voltage (especially when powering directly off batteries) not affect the ADC readings. The chip provides a VCC-independent fixed 1.1V reference voltage. Check the REFS0 and REFS1 registers in the datasheet on how to enable these. You won't be able to measure our example 2.0V voltage, but a simple voltage divider will take care of that.
Alternatively a special-purpose reference voltage chip or linear voltage regulator can be added to your design to make sure the reference voltage doesn't vary too much.
===Sample Resolution===
8-bit or 10-bit?
The sample resolution determines the final number that the ADC will store the result to. To refresh your memory, 8-bits are used to hold values from 0 to 255 and 10-bits are required to hold values from 0 to 1023. Since the ATTiny85 is an 8-bit micro it needs two registers to hold the final ADC value if you're using 10-bits sampling. In that case you will need to read the 'upper' and the 'lower' bytes, add them and treat them as an 16-bit integer in order not to lose any information.
Whether you need 8-bit or 10-bit sampling depends on your application. You will have a courser granularity when sampling at 8-bits but it's easier to process and code and if your requirements do not demand very fine detection of ADC input voltages it may be all you need. One thing to keep in mind is the voltage range per sample value.
Minimum detectable voltage difference between steps (0-5V):
at 8-bit sampling: 19.53mV
at 10-bit sampling: 4.88mV
Example #2 code:
* assumes a clock speed of 1MHz on an ATtiny85
* uses 10-bit resolution (values from 0-1024)
* uses ADC2 on pin PB4 (pin 3)
* uses Vcc as the reference voltage
<pre>
void initADC()
{
/* this function initialises the ADC
For more information, see table 17.5 "ADC Prescaler Selections" in
chapter 17.13.2 "ADCSRA – ADC Control and Status Register A"
(pages 140 and 141 on the complete ATtiny25/45/85 datasheet, Rev. 2586M–AVR–07/10)
// 10-bit resolution
// set ADLAR to 0 to disable left-shifting the result (bits ADC9 + ADC8 are in ADC[H/L] and
// bits ADC7..ADC0 are in ADC[H/L])
// use uint16_t variable to read ADC (intead of ADCH or ADCL)
*/
ADMUX =
(0 << ADLAR) | // do not left shift result (for 10-bit values)
(0 << REFS2) | // Sets ref. voltage to Vcc, bit 2
(0 << REFS1) | // Sets ref. voltage to Vcc, bit 1
(0 << REFS0) | // Sets ref. voltage to Vcc, bit 0
(0 << MUX3) | // use ADC2 for input (PB4), MUX bit 3
(0 << MUX2) | // use ADC2 for input (PB4), MUX bit 2
(1 << MUX1) | // use ADC2 for input (PB4), MUX bit 1
(0 << MUX0); // use ADC2 for input (PB4), MUX bit 0
ADCSRA =
(1 << ADEN) | // Enable ADC
(1 << ADPS2) | // set prescaler to 16, bit 2
(0 << ADPS1) | // set prescaler to 16, bit 1
(0 << ADPS0); // set prescaler to 16, bit 0
}
int main(void)
{
initADC();
uint8_t adc_lobyte; // to hold the low byte of the ADC register (ADCL)
uint16_t raw_adc;
while(1)
{
ADCSRA |= (1 << ADSC); // start ADC measurement
while (ADCSRA & (1 << ADSC) ); // wait till conversion complete
// for 10-bit resolution:
adc_lobyte = ADCL; // get the sample value from ADCL
raw_adc = ADCH<<8 | adc_lobyte; // add lobyte and hibyte
if (raw_adc > 512)
{
// ADC input voltage is more than half of the internal 1.1V reference voltage
} else {
// ADC input voltage is less than half of the internal 1.1V reference voltage
}
}
return 0;
}
</pre>
===Accuracy and Averaging===
If possible, take multiple samples and average them out. Assuming that the ADC always provides a reliable value at the first attempt may lead to undesired consequences. For one of my voltage-datalogger applications the main ADC sampling loop consisted of:
* sample 5 readings
* sort these from high to low
* discard the top and bottom
* average the remaining three
Alternatively, the following function can be used to sample and average many readings into only a few lines of code:
<pre>
// take 100x 8-bit samples and calculate a rolling average of the last 15 samples
float voltage_fl; // real battery voltage (0-5V) with decimals
float adc_step=0.01953; // (0-5V over 256 values)
int sample_loop;
for (sample_loop=100; sample_loop > 0 ; sample_loop --)
{
ADCSRA |= (1 << ADSC); // start ADC measurement
while (ADCSRA & (1 << ADSC) ); // wait till conversion complete
voltage_fl = voltage_fl + (((ADCH * adc_step) - voltage_fl) / 15); // integrated last 15-sample rolling average
}
</pre>
Does 100 samples sound like a bit much? Have a look here for what the averaging function does when it is given random values between 1.9 and 2.1.
[[File:Random-adc-values.png|thumb|none|250px|A close-up of some of the random values]]
And this is what happens after running the averaging function 100 times.
[[File:Last-15-rolling-avg.png|thumb|none|250px|Last 15 values are rolling averaged]]
As you can see it takes a while to settle. This is mainly caused by the number of rolling average samples (here 15) and the gradual 'building up' of the values when starting from 0. Ideally the very first ADC reading would not be zero, but to be on the safe side we have taken this precaution.
Resources:
* [[File:Icon-pdf.gif]] [[File:Attiny85-summary.pdf]] ATtiny85 Summary Datasheet (30 pages, 692kB)
* [[File:Icon-pdf.gif]] [[File:ATtiny85.pdf]] ATtiny85 Complete Datasheet (236 pages, 4.59MB)
* http://www.microchip.com/wwwproducts/en/ATtiny85 Official ATtiny85 product page
See also:
* [[C and C++]]
* [[ATtiny84_ADC]]
* [[ATtiny85_PWM]]
76f5942a3d7a23e48afbcc16e31df6f24cdcf39d
File:Kiwisdr-waterfall.jpg
6
794
3207
2019-12-02T00:18:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BSH203.pdf
6
796
3232
2019-12-13T08:08:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NDS352AP-D.PDF
6
797
3234
2019-12-13T08:10:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BSS84.pdf
6
798
3236
2019-12-13T08:12:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SSM3J332R.pdf
6
799
3247
2019-12-14T00:35:15Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BSS123-D.PDF
6
800
3256
2019-12-14T01:22:46Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BSH108.pdf
6
801
3258
2019-12-14T01:28:41Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:2N7002.pdf
6
802
3262
2019-12-14T01:41:19Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:BSS138-D.PDF
6
803
3264
2019-12-14T01:47:37Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:AO3400.pdf
6
804
3268
2019-12-14T02:30:06Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Si2303BDS.pdf
6
805
3270
2019-12-14T02:39:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Si2302DS.pdf
6
806
3272
2019-12-14T02:46:25Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NDS331N-D.PDF
6
807
3276
2019-12-14T02:51:20Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:5LN01C.PDF
6
808
3278
2019-12-14T03:01:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NTR4003N-D.PDF
6
809
3280
2019-12-14T03:07:55Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SOT-23 NFET pinout.png
6
810
3284
2019-12-14T03:15:31Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:SOT-23 PFET pinout.png
6
811
3287
2019-12-14T03:25:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Docs and Howto's
0
51
3296
2891
2019-12-17T02:52:10Z
Admin
1
wikitext
text/x-wiki
Howto's, information, guides, and other information that I wanted to have online for easy access.
Docs:
Something on [[Cryptography]]
Examples for [[Gnuplot]]
[[Blaupunkt520_repair]]
My Howto's:
[[Transfer_contacts_between_iphone_and_android]]
[[failsafe on turnigy evolution]]
08b546c915ca3c0a413a1060c8cf5251b6d258e0
File:Blaupunkt520 repair1.jpg
6
813
3299
2019-12-17T03:43:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair0.jpg
6
814
3303
2019-12-17T03:53:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Astra-TS-CD.jpg
6
815
3305
2019-12-17T03:58:59Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair2.jpg
6
816
3308
2019-12-17T04:19:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair3.jpg
6
817
3310
2019-12-17T04:22:18Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair4.jpg
6
818
3311
2019-12-17T04:23:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair5.jpg
6
819
3315
2019-12-17T04:26:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Blaupunkt520 repair6.jpg
6
820
3316
2019-12-17T04:28:09Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Blaupunkt520 repair
0
812
3322
3321
2019-12-17T04:51:19Z
Admin
1
wikitext
text/x-wiki
A little success story of a car radio repair gone right.
A few weeks ago my girlfriend's car radio stopped working. The car is a Holden Astra model ST from 2001 released for the Australian market. On the (UK-based) 'Astra Owners Website' they also refer to this model as either a Vauxhall Astra Fourth Generation (or Mk 4) or Opel Astra G.
[[File:Astra-TS-CD.jpg]]
Funnily enough, there are even three pages on Wikipedia, each for a particular market:
* https://en.wikipedia.org/wiki/Holden_Astra
* https://en.wikipedia.org/wiki/Vauxhall_Astra
* https://en.wikipedia.org/wiki/Opel_Astra
The car radio is a Blaupunkt 520. It's a smart-ish radio in that it communicates with an external display higher up in the centre console and shows things like radio station, volume, CD track etc..
[[File:Blaupunkt520 repair0.jpg]]
So at one point a few weeks ago the output volume suddenly started dropping. I was listening to some music on CD and the volume coming out of the speakers dropped to almost nothing over a period of maybe 10 seconds. I tried compensating by turning the volume up but it really was getting quieter and quieter. I switched on the FM radio but it was also very very quiet; almost no output volume. I switched off the radio and drove home.
This couldn't be a fuse or so because the radio and all the controls still worked; it was just very very quiet. Since the symptoms were the same when either listening to CD or radio I assumed that the fault was in the final output power amplifier.
Since I didn't really wanted to open up the radio and swap out these chips I thought it would be simpler to just look around for a second-hand Blaupunkt 520 radio. Someone on eBay had one on sale for $20 ex shipping. Unfortunately he didn't have the security code.
The security code is important because it locks down the radio if the battery power is removed. I knew our radio's code but that didn't help for this other radio as a unique code is programmed inside each radio. Change the radio and you'll need a new code. There are usually ways to recover (or maybe reset) the code through the official car dealership, e.g. in case you've lost your code or bought a car without knowing the code from the previous owner.
I decided to take the risk and buy the radio on eBay in the hopes of being able to reset it through a local Holden dealer. My girlfriend is the first owner of her Astra and has all the official paperwork to prove so. I thought it would be a (perhaps somewhat costly) breeze to recover the replacement radio's code.
The radio from eBay arrived shortly after the purchase and we began inquiring with several Holden dealers in the area to get an idea of what it would cost to have the radio code recovered. I must say this was a very unsatisfying experience. The feedback from the local dealers can be summarised as a mix of hostility, unhelpfulness, rudeness and sheer incompetence. Some seemed to insinuate that we had a stolen radio, others flat-out refused to help and some gave us the idea that our problem wasn't worth their time even though we were well prepared to pay for the recovery service.
The next step was to look for an online radio-code recovery service. Yes they exist, but we weren't successful with them either. Websites that offer these services ask for a couple of details and then (if all goes well) instantly produce a code that you can use straight away to unlock your radio. The website I found asked for the Blaupunkt 520's serial number and part number. Well, the serial number was printed on a sticker, but the part number was missing. I looked everywhere, even inside the radio, but was not able to find the part number. I figured that probably any website that offers these instant-code-generator services operates in the same way and not having a critical piece of information will probably mean that any other code generating website would also not be able to help.
After calling another Holden dealer I finally got some good information. In order to recover the radio code they would also need the VIN (chassis number) of the car that the radio originally came out of. I asked the eBay seller but he said he was unable to recover this information.
Hmm... what to do.
Since I already had the radio open at this stage I noticed the two final amplifier ICs.
(Grey and black ICs that are backed up against the two copper heat sinks)
[[File:Blaupunkt520 repair1.jpg]]
Standing up vertically, on the right side is the AM and FM radio module, but apart from that there was no easy swapping of modules that could help me repair the original radio with the one I just bought.
The Final Power Amplifier is the component in the radio that amplifies the (relatively weak) audio signals from the AM and FM radio or CD player and drives the loudspeakers. It was my guess to think that the fault was in these chips as the radio controls all worked; there just wasn't any audio out.
Investigating the part numbers on these chips it was clear that these were two identical chips, the TDA7375A. I recognised the 'ST' manufacturer logo and had a look on the ST MicroElectronics website to find the component. They now sell the TDA7375V and TDA7375AV, but not the plain 'A' series anymore. The datasheet for the 'AV' product did reveal that it is indeed a 'class AB car radio amplifier able to work either in dual bridge or quad single ended configuration.' (see here for product website on the ST website: https://www.st.com/content/st_com/en/products/automotive-infotainment-and-telematics/automotive-audio-power-amplifiers/automotive-class-ab-audio-power-amplifiers/tda7375av.html)
They are able to drive about 35W into a speaker and since there are two I think that it's 35W for the left and 35W for the right audio channel. A quick search on Mouser, a big online electronics parts supplier, showed that these chips retail for about $8 a piece.
At least I now knew that these were indeed the chips responsible for the final output Power Amplifiers and that the 'easiest' fix was to swap them over from the eBay radio (assuming that the PA chips in the Ebay radio were still good). I could have bought two new chips from Mouser, but I wasn't 100 per cent sure that the problem was indeed these chips. The most cost-effective way was just to salvage the chips from the eBay radio. This also meant that I didn't have to chase up radio codes as all I was going to do was replace the amplifier chips.
Let the (un)soldering begin..
Using a 40W soldering iron, a tin-sucker and a lot of patience I am able to take out the tin surrounding the pins one by one..
[[File:Blaupunkt520 repair2.jpg]]
..until all the pins are freed and I'm able to wiggle out the first chip.
(bottom view)
[[File:Blaupunkt520 repair3.jpg]]
(top view)
[[File:Blaupunkt520 repair4.jpg]]
Rinse and repeat until both chips from both radios are unsoldered.
[[File:Blaupunkt520 repair5.jpg]]
Finally! Both chips are unsoldered and ready to be swapped.
[[File:Blaupunkt520 repair6.jpg]]
The holes in the circuit board were clean enough for the replacement chips and after re-soldering them in place I began assembling the radio back together again.
I slotted the radio back into the car dashboard and the moment of truth came..
As expected, the clock-display in the top console asked for 'RADIO CODE - - - -'. I entered the radio code and it was accepted. So far so good.
I then turned on the radio to an FM station and... IT PLAYED SOUNDS THROUGH THE SPEAKERS!! YAAAY!!!
This is a very good outcome.
Apart from the frustration of talking to Holden dealers and the realisation that Blaupunkt doesn't make it easy for their radios to be re-used (even in identical cars!), it took me a few hours to do the soldering.
ff5d71c85f36fbe8aaef68d55847e390160a678a
Surface Mount FETs compared
0
795
3325
3324
2019-12-26T21:52:37Z
Admin
1
wikitext
text/x-wiki
One particular electronics component that I often found difficult to pick for my projects is the venerable MOSFET. The FET (Field Effect Transistor) is part of the Transistor family of semiconductors. There are many types of transistors, but they basically fall in one of these three broad categories:
* Current-driven: BJT (Bipolar Junction Transistor)
* Voltage-driven: FET (JFET and MOSFET)
* Other (e.g. phototransistors)
In this overview I focus mostly on Enhancement-mode MOSFETs and present a selection guide with examples.
BJTs and FETs can be used for either switching or amplification, but generally one type performs better than the other. Fastest switching speeds can still be obtained by BJTs but due to the low power consumption FETs are often the better choice.
Consider:
* BJTs require a constant current flow through the base in order for the transistor to open. This base-driven current flow can easily exceed the current rating of microcontroller ports and additional drivers (BJTs or FETs) are often required to enable higher drive currents. BJTs however outperform FETs in terms of amplification factor. Although BJTs can be used for switching purposes, they are not the most obvious choice when we need to save overall power consumption.
* FETs are voltage driven and can usually be connected directly to microcontroller ports. There is the factor of inrush-current if a FET has a high capacitance, but a simple series current-limiting resistor is sufficient to deal with that. FETs may also need to be selected to be compatible with the logic-level (TTL) voltages and may therefore also require additional drivers to enable higher (or lower) drive voltages. They are however a better choice than BJTs when it comes to low-power switching.
Lastly, before we get to our overview, there is one more distinction I want to address: JFET vs MOSFET. The JFET (Junction-FET) has certain benefits over the MOSFET. JFETs have a simpler production process and are therefore usually cheaper. JFETs also have higher gate input capacitance which makes them more robust to ESD (Electro-Static Discharge) compared to MOSFETs. However, since MOSFETs are the FET of choice for big players like Intel their prices have come down and characteristics have improved. It seems that, like BJTs, JFETs are slowly but steadily giving way to MOSFETs for many applications except where their niche is unchallenged.
(This page is a work in progress)
===Assumptions=== (the dangerous part of this page)
Typically, if we're using N-Channel FETs driven directly from a microcontroller, the drive voltage is probably going to be 1.8V, 3.3V or 5.0V. It is therefore best to select FETs that turn (almost) fully-on with the Vcc that we're powering the microcontroller with.
With FETs, I'm primarily interested in the ones that can switch on with mcu Vcc and offer a low RdsOn.
The FET package for my projects ideally should be SOT-23. These are the ones that I can still comfortably solder yet offer a maximum power rating (heat dissipation) of about 0.4W (that's about 80mA @ 5V, or 120mA @ 3.3V). In the datasheets, the 'Typical Output Characteristics' (Id vs Vds) shows the voltage drop (Vds axis) for a given Drain current. Multiply those and you'll get a feel for the heat dissipation in Watts.
===Vgsth===
The threshold value when the FET begins conducting. A bigger voltage difference between Gate and Source than this value will open the FET more. This value is usually shown in the Id-vs-Vgs 'Transfer Characteristics' graph. At the point where the curve (going up) becomes a near-linear line the FET is fully open. We generally seek the lowest voltage where the FET is about to become linear. The Transfer Characteristics graph however is not the best indicator what that 'fully-open' Vgs voltage is. The Transfer Characteristics graph often shows multiple curves showing how temperature affects the beginning of conduction. Furthermore, Vgsth is often the point at which only a very small amount of current (e.g. 250uA) begins to flow, in many real-world cases this is not the current we're interested in. Lastly, the Vgsth value is often measured at a nominal Vds voltage of about 10V, which in many low-power microcontroller circuits isn't always available. The better curve to show the FET-fully-on Voltage is the 'Output' or 'Typical On-State Resistance' curve. This curve often shows the Vgs voltages that are the tipping point between ever-increasing Rds (not enough Vgs) and Rds remaining nearly constant (sufficient Vgs to turn the FET on).
===Vgs_on===
This is my own parameter that shows when the FET should be fully on. This means that the RdsOn value remains largely constant and the FET is in (or close to) linear (aka 'saturation') mode. The main graph in the datasheet that I use to obtain this value is the 'Drain-Source On-Resistance' curve (showing RdsOn vs Id).
===Vds===
The maximum voltage the FET can safely handle between the Drain and Source. For our purposes we'll mainly look at whether the FET already turns on at mcu Vcc voltages.
===Id===
The maximum continuous current we can run through the Drain of the FET. This value is dependent on the maximum Drain-Source voltage. FETs running at a higher voltage need to lower their maximum current. The value for this characteristic is usually shown in the Id-vs-Vds(V) graph, aka the 'Safe operating area' graph. I'm usually only interested in the maximum continuous current rating without going over the maximum power rating of the FET (or SOT-23 package, i.e. around 0.4W). In practice, I look for FETs that can handle either up to 50mA or 100mA @ 5V or 3.3V.
===RdsOn===
The resistance between Drain and Source when the FET is fully open. The value for this characteristic is usually shown in the 'Output' or 'Typical On-State Resistance' curve (Rdson-vs-Id(mA)). As Vgs goes more and more above Vgsth (before the FET is fully-on) the lower the On-Resistance between Drain and Source (Rdson). When the FET is fully-on Rds remains fairly constant. If the FET is not yet fully-on, Rds is lower with low currents.
===N-Channel, Enhancement-mode, Logic-Level MOSFETs SOT-23===
Fortunately, for all these N-Channel FETs the pinout is the same:
[[File:SOT-23 NFET pinout.png]]
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Device</b>
|style="background-color:#f2f2f2;"|<b>Vgsth</b>
|style="background-color:#f2f2f2;"|<b>Vgs_on</b>
|style="background-color:#f2f2f2;"|<b>Vds</b>
|style="background-color:#f2f2f2;"|<b>Id</b>
|style="background-color:#f2f2f2;"|<b>RdsOn</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|style="background-color:#f2f2f2;"|<b>Datasheet</b>
|-
|Si2302DS
|0.65V
|2.0V
|20V
|?
|0.70R to 1.1R
|could work with 1.8V, low cost
|[[File:Si2302DS.pdf]]
|-
|NDS331N
|0.7V
|2.0V
|20V
|160mA @ 3.3Vds, 140mA @ 5Vds
|0.7R to 1.5R
|could work with 1.8V
|[[File:NDS331N-D.PDF]]
|-
|5LN01C
|1.0V
|2.0V
|50V
|
|6R to 10R
|high RdsOn
|[[File:5LN01C.PDF]]
|-
|AO3400
|1.05V
|2.5V
|30V
|120mA @ 3V, 105mA @ 5V
|0.18R to 0.54R
|don't use below 2.5Vds
|[[File:AO3400.pdf]]
|-
|BSS138
|1.3V
|2.5V
|50V
|100mA @ 3.3V, 70mA @ 5V
|1.2R to 2.3R
|don't use below 3.3V
|[[File:BSS138-D.PDF]]
|-
|BSS123
|1.7V
|2.5V
|100V
|100mA @ 3.3Vds, 70mA @ 5Vds
|0.8R to 1.2R
| good for 3.3V and up
|[[File:BSS123-D.PDF]]
|-
|BSH108
|1.5V
|2.6V
|30V
|75mA @ 3V, 45mA @5V
|0.10R to 0.18R
| good for 3V and up
|[[File:BSH108.pdf]]
|-
|NTR4003
|1.1V
|2.8V
|30V
|
|0.9R to 1.2R
|
|[[File:NTR4003N-D.PDF]]
|-
|2N7002
|2.5V
|5V
|60V
|?
|3.2R @ 5V
|High RdsOn, don't use below 5Vds
|[[File:2N7002.pdf]]
|}
===P-Channel, Enhancement-mode Logic-Level MOSFETs SOT-23===
Fortunately, for all these P-Channel FETs the pinout is the same:
[[File:SOT-23 PFET pinout.png]]
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Device</b>
|style="background-color:#f2f2f2;"|<b>Vgsth</b>
|style="background-color:#f2f2f2;"|<b>Vgs_on</b>
|style="background-color:#f2f2f2;"|<b>Vds</b>
|style="background-color:#f2f2f2;"|<b>Id</b>
|style="background-color:#f2f2f2;"|<b>RdsOn</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|style="background-color:#f2f2f2;"|<b>Datasheet</b>
|-
|BSH203
| -1.1V
| -2.5V
| -30V
| -80mA @ 5Vds, -105mA @ 3.3Vds
| 0.8R to 1.2R
| could work with 1.8Vgs
|[[File:BSH203.pdf]]
|-
|SSM3J332R
| -1.2V @ -3Vds
| -2.5V
| -30V
| -110 mA @ 5Vds, -200mA @ 3.3Vds
| 0.05R @ 3.3V
| could work with 1.8Vgs
|[[File:SSM3J332R.pdf]]
|-
|NDS352AP
| -2.5V @ -10Vds
| -3.5V
| -30V
| -100mA @ 5Vds, -105mA @ 3.3Vds
| 0.9R to 1.4R
| don't use below 3Vgs, low cost
|[[File:NDS352AP-D.PDF]]
|-
|BSS84
| -1.9V @ -10Vds
| -4.0V
| -50V
| -140mA @ -5Vds
| 8R to 12R
| High RdsOn, don't use below 4Vgs
|[[File:BSS84.pdf]]
|-
|Si2303BDS
| -2.0V
| -4.5V
| -30V
| 90mA @ 5Vds
| 0.18R to 0.5R
| don't use below 5Vgs
|[[File:Si2303BDS.pdf]]
|}
Note: if you're after TO-92 package FETs I can mention:
* P-Channel: BS250P, VP0109N3-G, ZVP2106ASTZ
* N-Channel: BS107A, BS170, 2N7000
d8eda21133af48faeb4716a94c32630ab8835fba
File:Nanovna-upgrade 01 lets-begin.jpg
6
822
3329
2020-03-14T05:36:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 02 28gauge-wire-underneath.jpg
6
823
3330
2020-03-14T05:42:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 03 one-side-loose.jpg
6
824
3331
2020-03-14T05:43:13Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 04 all-sides-loose.jpg
6
825
3332
2020-03-14T05:44:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 05 clean-pads.jpg
6
826
3333
2020-03-14T05:44:50Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 06 new-chips.jpg
6
827
3334
2020-03-14T05:45:56Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 07 position-chip.jpg
6
828
3335
2020-03-14T05:46:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 08 all-soldered-up.jpg
6
829
3336
2020-03-14T05:47:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 10 STLink-programmer.jpg
6
831
3338
2020-03-14T05:49:38Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 11 programming-new-firmware jolly-good.jpg
6
832
3339
2020-03-14T05:50:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 12 it-werks.jpg
6
833
3340
2020-03-14T05:51:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 13 firmware-info.jpg
6
834
3357
3341
2020-03-14T07:17:34Z
Admin
1
Admin uploaded a new version of [[File:Nanovna-upgrade 13 firmware-info.jpg]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Nanovna-upgrade 09 STLink-connections-to-pcb.jpg
6
830
3365
3337
2020-03-14T08:16:55Z
Admin
1
Admin uploaded a new version of [[File:Nanovna-upgrade 09 STLink-connections-to-pcb.jpg]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Nanovna-upgrade
0
821
3367
3366
2020-03-15T08:38:23Z
Admin
1
wikitext
text/x-wiki
In 2019 I bought a handy little tool called a Vector Network Analyser. These devices usually cost thousands of $$ but recently with the aid of very flexible, stable and affordable frequency generators from Silicon Labs, such as the Si5351A, a whole new range of rf products has been made available at very little cost.
(What is a Network analyzer: https://en.wikipedia.org/wiki/Network_analyzer_(electrical) )
At around $800 The VNWA3 from DG8SAQ (https://www.sdr-kits.net/introducing-DG8SAQ-VNWA3) is already a cost-effective unit. It uses two Analog Devices AD9859 signal generators (https://www.analog.com/en/products/ad9859.html) and three of SA612 double-balanced mixers and offers a detection bandwidth from 1kHz - 1.3GHz. It is a unit that requires a USB connection to a computer which in turn needs some software to show the results and graphs.
This design was further developed by edy555 (aka 'ttrf') in Japan and his version, the original NanoVNA, offered an all-in-one solution using a Silicon Labs Si5351A as the signal generator (https://www.silabs.com/timing/clock-generators/cmos/device.si5351a-b-gt) including a 2.8-inch colour touch-screen. Gen Hu further developed this hardware design and it became known as the NanoVNA-H (but they are compatible firmware-wise).
The NanoVNA I bought happened to be a Chinese clone of the NanoVNA-H. Everything seemed to work okay and I was able to use it to test various filters and antennas. After subscribing and following the NanoVNA forum for a few weeks I noticed that people were discussing upgrades to their NanoVNA by way of installing newer firmware. I got intrigued by this and wanted to see if I could also upgrade my NanoVNA with one of the latest firmwares.
There are several authors that release different kinds of NanoVNA firmware, but in essence they should all run on the same hardware. Exceptions are the NanoVNA-H4 (STM32F303) and the NanoVNA-F (ST32F303 + bigger screen). The unit I purchased has the standard size screen with an STM32F072 chip so my options for new firmware are:
* edy555 (https://github.com/ttrftech/NanoVNA/releases)
* Gen Hu (https://github.com/hugen79/NanoVNA-H/releases)
* QRP RX (https://github.com/qrp73/NanoVNA-Q/releases)
(See also: https://groups.io/g/nanovna-users/wiki/home#Hardware-versions)
I opted for the edy555 and visited his github page and downloaded the latest version, a binary file of about 87kByte in size.
Flashing the firmware resulted in an error because the chip that is used in my NanoVNA (STM32F072C8T6) only holds 64kByte of program (flash) memory. This means I cannot upload a 87kByte piece of code into a 64kByte chunk of memory.
A little bit of research on the NanoVNA forum and the ST MicroElectronics website shows that a bigger version with 128kByte flash of the chip exists. The part number is STM32F072CBT6. Everything else (pinout, supply voltage, physical dimensions) is exactly the same.
The difference is very subtle in the part name: C8 vs CB
* STM32F072C8T6 (64kByte Flash program memory)
* STM32F072CBT6 (128kByte Flash program memory)
(STM32F0x0 series of microcontrollers: https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
So I purchased 5x brand new, blank STM32F072CBT6 from RS-Online for $5.22 (AUD) each. (https://au.rs-online.com/web/p/microcontrollers/8805392/)
After a couple of weeks I finally had some some time to do the actual chip transplant.
[[File:Nanovna-upgrade 01 lets-begin.jpg]]
After removing the back cover and the small 450mAh 1S Li-Ion battery, the circuit board shows the original STM32F072C8T6 (big square chip on the left).
[[File:Nanovna-upgrade 02 28gauge-wire-underneath.jpg]]
I'm using a bit of 28 gauge wire underneath the pins to pull them away from the pads after heating them with a soldering iron.
[[File:Nanovna-upgrade 03 one-side-loose.jpg]]
This is the first row of pins unsoldered using the wire-pulling method.
[[File:Nanovna-upgrade 04 all-sides-loose.jpg]]
After some more work all four sides are now desoldered and the chip is free from the circuit board.
[[File:Nanovna-upgrade 05 clean-pads.jpg]]
To make sure the new chip is flat and even on the circuit board all pads are cleaned with solder wick.
[[File:Nanovna-upgrade 06 new-chips.jpg]]
Then comes the exciting moment of picking a new chip from the packet.
[[File:Nanovna-upgrade 07 position-chip.jpg]]
Positioning the new chip exactly on the pads and holding it down with some weight. Now it's time to begin soldering the new chip on the board.
[[File:Nanovna-upgrade 08 all-soldered-up.jpg]]
All soldered up and excess tin removed with solder wick. Looking good.
[[File:Nanovna-upgrade 09 STLink-connections-to-pcb.jpg]]
The NanoVNA has the connection pins for programming the chip close to the edge of the board, easy..
[[File:Nanovna-upgrade 10 STLink-programmer.jpg]]
STM chips have their own programmer. This one I bought off eBay for about $5. Connected with just 4 wires is all you need.
[[File:Nanovna-upgrade 11 programming-new-firmware jolly-good.jpg]]
Using the STLink programming software to load up the new firmware. It succeeds at first try. Jolly good!
[[File:Nanovna-upgrade 12 it-werks.jpg]]
After uploading the new firmware the NanoVNA is switched on for the first time and it all looks good. Notice that there is now a small battery indicator icon in the top-left corner. An additional diode is required to make the icon show some voltage level, but this feature was never present in the old firmware.
[[File:Nanovna-upgrade 13 firmware-info.jpg]]
Another feature that is now present in the firmware is a 'config' page that reveals which firmware you're actually running. Very handy.
The NanoVNA is now running with 128kByte Flash memory and the firmware version is edy555 v0.7.0 (23 Feb 2020)
Very happy to see that the firmware upgrade went pretty much effortlessly and I didn't have to worry about bootloaders, eeprom or anything else. Everything just works and the device now runs the latest firmware.
a81d35329d222cc3fee2f38744869909479c1b79
Console-colours
0
835
3381
3380
2020-05-13T21:58:11Z
Admin
1
wikitext
text/x-wiki
When working with Linux remotely over ssh it's sometimes nice to be able to work with a different colour scheme (or color scheme as some write). With ssh clients like Putty it's easy to change the foreground and background colours of the characters, but Linux supports different colours for different types of data; sometimes based on the file extension, sometimes based on functionality (e.g. directory names, command prompt, current working directory, bold text, links, etc..).
Below are listed the most commonly used colour sets and some instructions on how to change them.
===change bash prompt colours===
The bash prompt can show colors for username, hostname and current working directory.
The colours as well as the components that determine what the prompt should contain are all set in the PS1 environment variable.
The PS1 string is usually set in ~/.bashrc and can look something like this:
<pre>
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
</pre>
Pay attention at the part \u@\h it is saying "user@host" and the number before it \[\033[01;32m\] indicates the color. This is what needs changing if you want a different colour.
The \u and \h are the username and hostname, but there are more:
<pre>
\u username
\h system host name
\w current (working) directory
\$ show a # if the effective UID is 0 (i.e. root user), otherwise display a $
\a unknown
\@ time in 12-hour am/pm format
</pre>
The full PS1 string looks quite complicated, but here is it broken up into the various pieces:
Set a colour and display the username, @-sign and hostname
<pre>
\[\033[01;32m\]\u@\h
</pre>
Remove any colour codes (use the terminal default) and display the ':' sign
<pre>
\[\033[00m\]:
</pre>
Set a colour and display the current working directory
<pre>
\[\033[01;34m\]\w
</pre>
Once again disable any colour codes and display just the '$' sign
<pre>
\[\033[00m\]\$
</pre>
The actual colour is defined by the semicolon-separated number pair that is inside the inner square brackets (e.g. '01;32'). All the extra stuff is just escape characters and color-begin and color-end markers.
The colors numbers are:
<pre>
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
</pre>
===change manpage colors===
When man pages are viewed, they are piped through a program called 'less', which offers page navigation and search capabilities of the man-page text.
The idea is to override the colour settings that less uses.
edit and add the following lines to ~/.bashrc to load up the new colourscheme.
<pre>
export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode - red
export LESS_TERMCAP_md=$(printf '\e[01;35m') # enter double-bright mode - bold, magenta
export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode - yellow
export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
export LESS_TERMCAP_us=$(printf '\e[04;36m') # enter underline mode - cyan
</pre>
The color codes are as follows:
<pre>
30 – black
31 – red
32 – green
33 – orange
34 – blue
35 – magenta
36 – cyan
37 – white
</pre>
Some other escape codes which you could use include:
<pre>
0 – reset/normal
1 – bold
3 – italic/reversed
4 – underlined
5 – blink
</pre>
===change vi (vim) colours===
The vi editor has a range of color schemes available that are defined in /usr/share/vim/vim74/colors/
Adding:
<pre>
colo blue
</pre>
..to ~/.vimrc will use the 'blue' colorscheme. Other options are:
<pre>
darkblue
default
delek
desert
elflord
evening
industry
koehler
morning
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner
</pre>
You could of course also type: 'colo blue' on the vi status line to immediately change to it.
The status line is what appears after you press the <ESCAPE> key and type a : (the colon symbol)
Add the following line to your ~/.vimrc to change the bottom line text color (that shows the edit mode, INSERT or REPLACE):
<pre>
hi ModeMsg term=bold ctermfg=2 gui=bold guifg=SeaGreen
</pre>
When 'su' -ing into another account, the .vimrc of that su account will override the .vimrc from the account you were coming from.
More options:
<pre>
hi LineNr ctermfg=grey guifg=grey
hi Statement ctermfg=black guifg=black
hi Identifier ctermfg=darkGreen guifg=darkGreen
hi Comment term=bold ctermfg=4 guifg=#406090
hi Constant term=underline ctermfg=Red guifg=#c00058
hi Special term=bold ctermfg=Blue guifg=SlateBlue
hi Identifier term=underline ctermfg=Black guifg=Black
hi Statement term=bold ctermfg=Brown gui=bold guifg=Brown
hi PreProc term=underline ctermfg=Magenta guifg=Magenta3
hi Type term=underline ctermfg=Green gui=bold guifg=SeaGreen
hi Ignore cterm=bold ctermfg=7 guifg=bg
hi Error term=reverse cterm=bold ctermfg=7 ctermbg=1 gui=bold guifg=White guibg=Red
hi Todo term=standout ctermfg=0 ctermbg=3 guifg=Blue guibg=Yellow
</pre>
To see all the available (and currently configured color schemes) type the following:
<pre>
hi
</pre>
Lastly, vim has been configured on some systems to support Syntax Highlighting. Some find this fantastic, others find this annoying. To turn it off, type 'syntax off' on the status line or include it in your .vimrc file.
===change directory and file type colours===
In some cases you may want to change the file type colours that appear when viewing a directory listing in Linux.
Normally, directories are dark blue, .gz files are red, executables are green, etc..
The colours are managed by the LS_COLORS environment variable which can be easily modified with the utility 'dircolors'.
Step 1 – Copy the current LS_COLORS to a file in your home folder.
<pre>
dircolors > ~/.dir_colors
</pre>
Step 2 – Edit the files to make whatever changes you require.
<pre>
vi ~/.dir_colors
</pre>
Step 3 – load the new color scheme whenever a shell starts
<pre>
echo ". ~/.dir_colors" >> ~/.bashrc
</pre>
NOTE: when using 'su' the color scheme is inherited from the user you were logged in as. So if the colours while in 'su' are not to your liking, you need to change the dircolors scheme for the pre-su-user, not root.
You will notice that the LS_COLORS variable contains many definitions. The dircolors utility has a way of displaying the colour definitions a bit nicer:
<pre>
dircolors --print-database
</pre>
The first number is the style (1=bold), followed by a semicolon, and then the actual number of the color, possible styles are:
<pre>
0 = default colour
1 = bold
4 = underlined
5 = flashing text
7 = reverse field
40 = black background
41 = red background
42 = green background
43 = orange background
44 = blue background
45 = purple background
46 = cyan background
47 = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
</pre>
All possible colors:
<pre>
31 = red
32 = green
33 = orange
34 = blue
35 = purple
36 = cyan
37 = grey
90 = dark grey
91 = light red
92 = light green
93 = yellow
94 = light blue
95 = light purple
96 = turquoise
</pre>
These can even be combined, so that a parameter like:
<pre>
di=1;4;31;42
</pre>
in your LS_COLORS variable would make directories appear in bold underlined red text with a green background!
You can also change other kinds of files when using the ls command by defining each kind with:
<pre>
di = directory
fi = file
ln = symbolic link
pi = fifo file
so = socket file
bd = block (buffered) special file
cd = character (unbuffered) special file
or = symbolic link pointing to a non-existent file (orphan)
mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
ex = file which is executable (ie. has 'x' set in permissions).
*.rpm = files with the ending .rpm
</pre>
After you alter your .bashrc file, to put the changes in effect you will have to restart your shell.
6674310cdac0cbb6e3bac5346b9a1567a31c9300
Gtk-scroll-behaviour
0
836
3383
2020-05-15T11:07:33Z
Admin
1
Created page with " When I left-click anywhere above or below the thumb, it jumps to that position and starts dragging from there. The expected behavior is to scroll one page up or down. When..."
wikitext
text/x-wiki
When I left-click anywhere above or below the thumb, it jumps to that position and starts dragging from there. The expected behavior is to scroll one page up or down.
When I right-click anywhere above or below the thumb, it scrolls one page up or down. That is the behavior I expect from left-clicking, the same way it works on GTK2 and QT applications.
Horizontal scrollbars have the same problem.
The problem is caused by GTK 3, and can be cured by creating or editing a file
~/.config/gtk-3.0/settings.ini
with contents
[Settings] gtk-primary-button-warps-slider = false
https://forums.gentoo.org/viewtopic-t-948904-start-0.html
https://askubuntu.com/questions/295988/how-to-fix-gtk3-scrollbar-behavior
6cd11f11557caa5e161e14d9602b225cd49800fe
Wireless-setup
0
279
3384
1253
2020-05-21T06:24:35Z
Admin
1
wikitext
text/x-wiki
Required files and packages to set up Wi-Fi for linux
<pre>
apt-get install wpa-supplicant wireless-tools
</pre>
/etc/network/interfaces
<pre>
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
</pre>
/etc/wpa_supplicant/wpa_supplicant.conf
<pre>
network={
ssid="MYSSID"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="mypassword"
}
</pre>
37f1f087c82847e031902eb306113fa079578702
Disk-Imaging
0
420
3388
3387
2020-05-24T08:14:48Z
Admin
1
wikitext
text/x-wiki
At some stage you may want to take a snapshot image of a complete disk drive, including boot sector. There are various ways of doing this but this page lists my preferred tools to do the job.
All these tools require the disk to be fully accessible (i.e. don't have the operating system running on the disk you want to image)
Beware that if Windows doesn't understand a filesystem (ext2, ext3, etc..) it will prompt you to 'Initialise' (FORMAT!) the disk. This is almost never what you want, so cancel whatever windows throws at you in these cases.
==Take a disk image==
* on Linux
Using dd (usually already installed on most Linux systems)
- find out what the disks are called by doing a cat on /proc/partitions
- use the device name without partitions to use the whole disk (assumes MBR) (e.g. /dev/sdb)
<pre>
dd if=/dev/sdb of=/data/mydiskimage.dd bs=1M
</pre>
* on Windows
Using Win32DiskImager (freeware), download from here: http://sourceforge.net/projects/win32diskimager/ (size: about 12MB)
- pretty simple to use
- most often already selects external media by drive letter.
- Don't worry if windows doesn't show you all partitions as it probably can't read them (ext2, ext3, etc..)
Using dd (freeware), download from here: http://www.chrysocome.net/dd
- command-line utility, so open a DOS box first.
- Similar syntax should apply here as per the dd command used in Linux
- Find out disk name information using the --list argument (see above website)
==Restore a disk image==
* on Linux
<pre>
dd if=/data/mydiskimage.dd of=/dev/sdb bs=1M
</pre>
* on Windows
Using dd (freeware), download from here: http://www.chrysocome.net/dd (size: about 200kB)
- command-line utility, so open a DOS box first.
- Similar syntax should apply here as per the dd command used in Linux
- Find out disk name information using the --list argument (see above website)
Using Win32DiskImager
- pretty simple to use, most often already selects external media by drive letter.
===If the target disk is smaller than the original disk===
If the target disk you want to restore an image to is smaller in size than the original disk you took the image from you will run into some error messages telling you that the original image is too big. The dd command will simply throw some warning messages but tries to do as much as possible. However Win32DiskImager will not even do this. Read on if you really need to use Win32DiskImager to restore the image.
From this point on I will just assume that you understand the dangers of possible data loss, etc..
To truncate the image so you can use Win32DiskImager to restore to a smaller disk you simply create a new image from the existing image but read less data from it. We can do this with the dd command as follows:
<pre>
dd if=/data/bigimage.dd of=/data/smallimage bs=1M count=xxxx
</pre>
..where count=xxxx is the number of Megabytes that will fit on the smaller target drive. You may need to experiment with this to minimise the loss of data while still being able to fit it on the smaller disk.
==Look inside a disk image==
* on Linux
Using mount (usually already installed on most Linux systems)
Before we can mount a partition that's inside a dd image we need to know the disk layout. If we still have the original disk handy at /dev/sdb we can simply issue:
<pre>
fdisk /dev/sdb -l
Disk /dev/sdb: 3.7 GiB, 3951034368 bytes, 7716864 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000714e9
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 122879 114688 56M c W95 FAT32 (LBA)
/dev/sdb2 122880 7290879 7168000 3.4G 83 Linux
</pre>
However, if the dd image is the only thing you have then you'll have to tell fdisk to look at the dd image rather than a device, like so:
<pre>
fdisk myimage.dd -l
Disk myimage.dd: 3.7 GiB, 3951034368 bytes, 7716864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000714e9
Device Boot Start End Sectors Size Id Type
myimage.dd1 8192 122879 114688 56M c W95 FAT32 (LBA)
myimage.dd2 122880 7290879 7168000 3.4G 83 Linux
</pre>
Same thing.
In order to mount a specific partition within a dd image we can invoke the 'mount' command with an 'offset' parameter. This offset is used to skip a number of Bytes within the dd image to jump to the beginning of a partition. Fdisk lists each partition offset in sectors in the 'Start' column. This number is the Sector number at which the partition begins. Now look closely in the output of the fdisk command and confirm the size of a sector, in the above example each sector is 512 bytes. If we now multiply the Start sector number by 512 Bytes we get the offset in Bytes where the partition begins.
For example, to mount the second partition in the above example we multiply 122880 x 512 = 62914560 to find the offset in Bytes. We can then issue the mount command as follows:
<pre>
mount -o loop,offset=62914560 mydiskimage.dd /mnt
</pre>
* on Windows
Since Windows natively cannot read ext2 filesystems a third-party driver is required.
- grab the Windows Ext2Fsd driver (freeware) from here: http://www.ext2fsd.com/?page_id=7
- Downloading and running the Ext2Fsd-xxxx.exe is the easiest way. The file size is about 1MB
- tick all boxes to support read/write access and automatic loading of the driver at startup.
Since Windows does not know how to mount an image a third-party tool is required.
- grab OFSmount (freeware) from here: http://www.osforensics.com/tools/mount-disk-images.html
- Either use the 32-bit or 64-bit version depending on your version of windows. The file size is about 2MB
Once these programs are installed it is simply a matter of opening a partition of the image file with OFSmount and the ext2, ext3 directories will be mounted as a normal Drive-Letter in Windows. You can then use Windows (file) Explorer to navigate through the mounted image files and directories.
Make sure to unmount the image when done.
dc7cf94532cee4236b9c6c4e485dd46b6d9c9caf
Linux info
0
25
3391
3382
2020-07-27T09:55:45Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
dcee9ad55010bb9408b90ebe31de41f24a40272c
Computers
0
282
3394
3000
2020-07-27T10:02:36Z
Admin
1
wikitext
text/x-wiki
[[Raspberry Pi]]
[[Sheeva Plug]]
[[NSLU2]]
e667f7706c5dc0684377d7df5626cb802f5a62bf
Javascript
0
838
3397
3396
2020-07-27T10:07:39Z
Admin
1
wikitext
text/x-wiki
JSON things I used in my node-red home automation projects
Code to read multiple DS18B20 or DS18S20 temperature sensors from a Wemos D1 mini and feed them into a graph object in node-red
<pre>
var obj = JSON.parse(msg.payload);
/*
example output from topic 'house/wemos2/tele/SENSOR'
{
"Time":"2020-07-26T10:38:21",
"DS18S20-1":{"Id":"000802015ED5","Temperature":20.3},
"DS18B20-2":{"Id":"02131E3901AA","Temperature":19.8},
"TempUnit":"C"
}
*/
if ("DS18S20-1" in obj)
{
var msg1 = {
payload : obj['DS18S20-1'].Temperature,
topic : "Peltier-Cold"
}
}
if ("DS18B20-2" in obj)
{
var msg2 = {
payload : obj['DS18B20-2'].Temperature,
topic : "Inside Box"
}
}
if ("DS18B20-3" in obj)
{
var msg3 = {
payload : obj['DS18B20-3'].Temperature,
topic : "Peltier Hot"
}
}
node.send([[msg1,msg2,msg3]]);
</pre>
70f4b24d7382e4d58a28599ff6d73502c4ad7fd1
Amateur Radio
0
237
3404
3389
2020-09-15T11:16:49Z
Admin
1
wikitext
text/x-wiki
[[File:Australian Band Plans 140709.pdf]] WIA - Australian Amateur Band Plans - updated 09/07/2014
* My entry on [http://www.qrz.com/db/VK2CEL www.qrz.com]
* Some [[International contests]]
* [[2018 VK Contest Dates]] (Phone)
* [[2017 VK Contest Dates]] (Phone)
* [[2016 VK Contest Dates]] (Phone)
* [[2015 VK Contest Dates]] (Phone)
* [[2014 VK Contest Dates]] (Phone)
* [[2013 VK Contest Dates]] (Phone)
* [[aprs]]
* [[sdr]]
* [[qrp]] (Low Power)
* [[impedance matching]]
* [[common mode interference]]
* [[baluns]]
* [[low-cost antenna shootout 70cm]]
* [[Ionosphere]]
* [[QCX-transceiver]]
* Online Intermodulation Calculator: http://www.marcelpost.com/intermod/
* [[RS41]] Radiosonde STM32 fun
12f8d491fbcba2254dc81f444e6430a73838df28
RS41
0
839
3405
2020-09-15T11:18:13Z
Admin
1
Created page with "The Vaisala RS41 radiosonde modules are literally STM32 boards falling out of the sky. Here is a crude collection of links to tie things on one page [[RS41-flashing]]"
wikitext
text/x-wiki
The Vaisala RS41 radiosonde modules are literally STM32 boards falling out of the sky.
Here is a crude collection of links to tie things on one page
[[RS41-flashing]]
7e821746ed4270397310a71debcf21516cf8d9db
File:RS41-on-off-button.jpg
6
841
3410
2020-09-15T22:34:47Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
RS41-flashing
0
840
3411
3409
2020-09-15T22:35:09Z
Admin
1
wikitext
text/x-wiki
If you've just retrieved an RS41 radiosonde and wonder how to get started with flashing it with your own code then this page is for you.
===stopping the transmitter===
When an RS41 is launched it holds 2x AA batteries that will keep the radiosonde transmitting for about 6 hours. The simplest way to stop the RS41 from transmitting is to press the on/off button briefly. The button is located under the sticker with the serial number, but just press it until the LED turns off.
[[File:RS41-on-off-button.jpg]]
===open the case===
Pry open the two plastic tabs on the top and bottom to separate the two styrofoam halves that encapsulates the RS41 circuit board.
===Connecting to the RS41 programming header===
If you have a 2mm-pitch 2x5 IDC connector laying around you can use that, but most people will just have to solder four wires to the programming header.
<pre>
____________________
____________________| (circuit board)
| 2 4 6 8 10 |
| 1 3 5 7 9 | (programming connector)
+------------+
pin
------------
1 GND
2
3
4 Vcc (3.3V !!)
5
6
7
8 SWCLK
9 SWDIO
10
</pre>
Using a USB ST-Link programming dongle we connect the wires.
===setting up the STM32 compiler environment===
apt-get install
===install the ST-Link software===
Don't use the Debian apt version of stlink, but instead use the one on github or grab it with pip (python installer)
git clone https://github.com/stlink-org/stlink.git
pip
===clear the write-protect flag of the flash memory===
<pre>
start stlink debugger
- batteries not required (power STM32 straight from STLink)
- button press not required
in one screen run:
---[openocd debugger]---
map@zhora:~/local/radiosonde-rs41$ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v29 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.306883
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
---[]---
then run telnet on another screen
---[telnet localhost 4444]---
map@zhora:~/local/radiosonde-rs41$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> reset
> halt
target halted due to debug-request, current mode: Handler HardFault
xPSR: 0x41000003 pc: 0x0800d5fc msp: 0x200015c0
> flash info 0
device id = 0x10016420
STM32 flash size failed, probe inaccurate - assuming 128k flash
flash size = 128kbytes
#0 : stm32f1x at 0x08000000, size 0x00020000, buswidth 0, chipwidth 0
# 0: 0x00000000 (0x400 1kB) protected
# 1: 0x00000400 (0x400 1kB) protected
# 2: 0x00000800 (0x400 1kB) protected
# 3: 0x00000c00 (0x400 1kB) protected
# 4: 0x00001000 (0x400 1kB) protected
# 5: 0x00001400 (0x400 1kB) protected
# 6: 0x00001800 (0x400 1kB) protected
# 7: 0x00001c00 (0x400 1kB) protected
# 8: 0x00002000 (0x400 1kB) protected
# 9: 0x00002400 (0x400 1kB) protected
# 10: 0x00002800 (0x400 1kB) protected
# 11: 0x00002c00 (0x400 1kB) protected
# 12: 0x00003000 (0x400 1kB) protected
# 13: 0x00003400 (0x400 1kB) protected
# 14: 0x00003800 (0x400 1kB) protected
# 15: 0x00003c00 (0x400 1kB) protected
# 16: 0x00004000 (0x400 1kB) protected
# 17: 0x00004400 (0x400 1kB) protected
# 18: 0x00004800 (0x400 1kB) protected
# 19: 0x00004c00 (0x400 1kB) protected
# 20: 0x00005000 (0x400 1kB) protected
# 21: 0x00005400 (0x400 1kB) protected
# 22: 0x00005800 (0x400 1kB) protected
# 23: 0x00005c00 (0x400 1kB) protected
# 24: 0x00006000 (0x400 1kB) protected
# 25: 0x00006400 (0x400 1kB) protected
# 26: 0x00006800 (0x400 1kB) protected
# 27: 0x00006c00 (0x400 1kB) protected
# 28: 0x00007000 (0x400 1kB) protected
# 29: 0x00007400 (0x400 1kB) protected
# 30: 0x00007800 (0x400 1kB) protected
# 31: 0x00007c00 (0x400 1kB) protected
# 32: 0x00008000 (0x400 1kB) protected
# 33: 0x00008400 (0x400 1kB) protected
# 34: 0x00008800 (0x400 1kB) protected
# 35: 0x00008c00 (0x400 1kB) protected
# 36: 0x00009000 (0x400 1kB) protected
# 37: 0x00009400 (0x400 1kB) protected
# 38: 0x00009800 (0x400 1kB) protected
# 39: 0x00009c00 (0x400 1kB) protected
# 40: 0x0000a000 (0x400 1kB) protected
# 41: 0x0000a400 (0x400 1kB) protected
# 42: 0x0000a800 (0x400 1kB) protected
# 43: 0x0000ac00 (0x400 1kB) protected
# 44: 0x0000b000 (0x400 1kB) protected
# 45: 0x0000b400 (0x400 1kB) protected
# 46: 0x0000b800 (0x400 1kB) protected
# 47: 0x0000bc00 (0x400 1kB) protected
# 48: 0x0000c000 (0x400 1kB) protected
# 49: 0x0000c400 (0x400 1kB) protected
# 50: 0x0000c800 (0x400 1kB) protected
# 51: 0x0000cc00 (0x400 1kB) protected
# 52: 0x0000d000 (0x400 1kB) protected
# 53: 0x0000d400 (0x400 1kB) protected
# 54: 0x0000d800 (0x400 1kB) protected
# 55: 0x0000dc00 (0x400 1kB) protected
# 56: 0x0000e000 (0x400 1kB) protected
# 57: 0x0000e400 (0x400 1kB) protected
# 58: 0x0000e800 (0x400 1kB) protected
# 59: 0x0000ec00 (0x400 1kB) protected
# 60: 0x0000f000 (0x400 1kB) not protected
# 61: 0x0000f400 (0x400 1kB) not protected
# 62: 0x0000f800 (0x400 1kB) not protected
# 63: 0x0000fc00 (0x400 1kB) not protected
# 64: 0x00010000 (0x400 1kB) not protected
# 65: 0x00010400 (0x400 1kB) not protected
# 66: 0x00010800 (0x400 1kB) not protected
# 67: 0x00010c00 (0x400 1kB) not protected
# 68: 0x00011000 (0x400 1kB) not protected
# 69: 0x00011400 (0x400 1kB) not protected
# 70: 0x00011800 (0x400 1kB) not protected
# 71: 0x00011c00 (0x400 1kB) not protected
# 72: 0x00012000 (0x400 1kB) not protected
# 73: 0x00012400 (0x400 1kB) not protected
# 74: 0x00012800 (0x400 1kB) not protected
# 75: 0x00012c00 (0x400 1kB) not protected
# 76: 0x00013000 (0x400 1kB) not protected
# 77: 0x00013400 (0x400 1kB) not protected
# 78: 0x00013800 (0x400 1kB) not protected
# 79: 0x00013c00 (0x400 1kB) not protected
# 80: 0x00014000 (0x400 1kB) not protected
# 81: 0x00014400 (0x400 1kB) not protected
# 82: 0x00014800 (0x400 1kB) not protected
# 83: 0x00014c00 (0x400 1kB) not protected
# 84: 0x00015000 (0x400 1kB) not protected
# 85: 0x00015400 (0x400 1kB) not protected
# 86: 0x00015800 (0x400 1kB) not protected
# 87: 0x00015c00 (0x400 1kB) not protected
# 88: 0x00016000 (0x400 1kB) not protected
# 89: 0x00016400 (0x400 1kB) not protected
# 90: 0x00016800 (0x400 1kB) not protected
# 91: 0x00016c00 (0x400 1kB) not protected
# 92: 0x00017000 (0x400 1kB) not protected
# 93: 0x00017400 (0x400 1kB) not protected
# 94: 0x00017800 (0x400 1kB) not protected
# 95: 0x00017c00 (0x400 1kB) not protected
# 96: 0x00018000 (0x400 1kB) not protected
# 97: 0x00018400 (0x400 1kB) not protected
# 98: 0x00018800 (0x400 1kB) not protected
# 99: 0x00018c00 (0x400 1kB) not protected
#100: 0x00019000 (0x400 1kB) not protected
#101: 0x00019400 (0x400 1kB) not protected
#102: 0x00019800 (0x400 1kB) not protected
#103: 0x00019c00 (0x400 1kB) not protected
#104: 0x0001a000 (0x400 1kB) not protected
#105: 0x0001a400 (0x400 1kB) not protected
#106: 0x0001a800 (0x400 1kB) not protected
#107: 0x0001ac00 (0x400 1kB) not protected
#108: 0x0001b000 (0x400 1kB) not protected
#109: 0x0001b400 (0x400 1kB) not protected
#110: 0x0001b800 (0x400 1kB) not protected
#111: 0x0001bc00 (0x400 1kB) not protected
#112: 0x0001c000 (0x400 1kB) not protected
#113: 0x0001c400 (0x400 1kB) not protected
#114: 0x0001c800 (0x400 1kB) not protected
#115: 0x0001cc00 (0x400 1kB) not protected
#116: 0x0001d000 (0x400 1kB) not protected
#117: 0x0001d400 (0x400 1kB) not protected
#118: 0x0001d800 (0x400 1kB) not protected
#119: 0x0001dc00 (0x400 1kB) not protected
#120: 0x0001e000 (0x400 1kB) not protected
#121: 0x0001e400 (0x400 1kB) not protected
#122: 0x0001e800 (0x400 1kB) not protected
#123: 0x0001ec00 (0x400 1kB) not protected
#124: 0x0001f000 (0x400 1kB) not protected
#125: 0x0001f400 (0x400 1kB) not protected
#126: 0x0001f800 (0x400 1kB) not protected
#127: 0x0001fc00 (0x400 1kB) not protected
STM32F100 (Low/Medium Density) - Rev: Z
>
> reset
> halt
> flash protect 0 0 last off
Device Security Bit Set
target halted due to breakpoint, current mode: Handler HardFault
xPSR: 0x61000003 pc: 0x2000003a msp: 0x200015c0
cleared protection for sectors 0 through 127 on flash bank 0
> flash info 0
device id = 0x10016420
flash size = 64kbytes
#0 : stm32f1x at 0x08000000, size 0x00010000, buswidth 0, chipwidth 0
# 0: 0x00000000 (0x400 1kB) not protected
# 1: 0x00000400 (0x400 1kB) not protected
# 2: 0x00000800 (0x400 1kB) not protected
# 3: 0x00000c00 (0x400 1kB) not protected
# 4: 0x00001000 (0x400 1kB) not protected
# 5: 0x00001400 (0x400 1kB) not protected
# 6: 0x00001800 (0x400 1kB) not protected
# 7: 0x00001c00 (0x400 1kB) not protected
# 8: 0x00002000 (0x400 1kB) not protected
# 9: 0x00002400 (0x400 1kB) not protected
# 10: 0x00002800 (0x400 1kB) not protected
# 11: 0x00002c00 (0x400 1kB) not protected
# 12: 0x00003000 (0x400 1kB) not protected
# 13: 0x00003400 (0x400 1kB) not protected
# 14: 0x00003800 (0x400 1kB) not protected
# 15: 0x00003c00 (0x400 1kB) not protected
# 16: 0x00004000 (0x400 1kB) not protected
# 17: 0x00004400 (0x400 1kB) not protected
# 18: 0x00004800 (0x400 1kB) not protected
# 19: 0x00004c00 (0x400 1kB) not protected
# 20: 0x00005000 (0x400 1kB) not protected
# 21: 0x00005400 (0x400 1kB) not protected
# 22: 0x00005800 (0x400 1kB) not protected
# 23: 0x00005c00 (0x400 1kB) not protected
# 24: 0x00006000 (0x400 1kB) not protected
# 25: 0x00006400 (0x400 1kB) not protected
# 26: 0x00006800 (0x400 1kB) not protected
# 27: 0x00006c00 (0x400 1kB) not protected
# 28: 0x00007000 (0x400 1kB) not protected
# 29: 0x00007400 (0x400 1kB) not protected
# 30: 0x00007800 (0x400 1kB) not protected
# 31: 0x00007c00 (0x400 1kB) not protected
# 32: 0x00008000 (0x400 1kB) not protected
# 33: 0x00008400 (0x400 1kB) not protected
# 34: 0x00008800 (0x400 1kB) not protected
# 35: 0x00008c00 (0x400 1kB) not protected
# 36: 0x00009000 (0x400 1kB) not protected
# 37: 0x00009400 (0x400 1kB) not protected
# 38: 0x00009800 (0x400 1kB) not protected
# 39: 0x00009c00 (0x400 1kB) not protected
# 40: 0x0000a000 (0x400 1kB) not protected
# 41: 0x0000a400 (0x400 1kB) not protected
# 42: 0x0000a800 (0x400 1kB) not protected
# 43: 0x0000ac00 (0x400 1kB) not protected
# 44: 0x0000b000 (0x400 1kB) not protected
# 45: 0x0000b400 (0x400 1kB) not protected
# 46: 0x0000b800 (0x400 1kB) not protected
# 47: 0x0000bc00 (0x400 1kB) not protected
# 48: 0x0000c000 (0x400 1kB) not protected
# 49: 0x0000c400 (0x400 1kB) not protected
# 50: 0x0000c800 (0x400 1kB) not protected
# 51: 0x0000cc00 (0x400 1kB) not protected
# 52: 0x0000d000 (0x400 1kB) not protected
# 53: 0x0000d400 (0x400 1kB) not protected
# 54: 0x0000d800 (0x400 1kB) not protected
# 55: 0x0000dc00 (0x400 1kB) not protected
# 56: 0x0000e000 (0x400 1kB) not protected
# 57: 0x0000e400 (0x400 1kB) not protected
# 58: 0x0000e800 (0x400 1kB) not protected
# 59: 0x0000ec00 (0x400 1kB) not protected
# 60: 0x0000f000 (0x400 1kB) not protected
# 61: 0x0000f400 (0x400 1kB) not protected
# 62: 0x0000f800 (0x400 1kB) not protected
# 63: 0x0000fc00 (0x400 1kB) not protected
STM32F100 (Low/Medium Density) - Rev: Z
>
---[]---
</pre>
===flasing firmware===
once the flash has been set to unprotected, it is now possible to write the .bin file in one simple way:
st-flash --format binary write RS41HUP.bin 0x8000000
btw, you may need to time it right to start this command as it may only accept incoming resets/writing data at the very beginning of powering up the device.
===
93a468ad711039aca3c5d86aeee716f351344fff
File:Rpi-pushbutton-pinout.jpg
6
842
3412
2020-09-16T07:06:57Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Rpi-button-cable.jpg
6
843
3421
2020-09-16T07:39:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Rpi-shutdown-button
0
286
3428
3427
2020-09-16T07:54:55Z
Admin
1
wikitext
text/x-wiki
A simple but very useful circuit to add to the raspberry pi's GPIO header is a Shutdown/Reset button with a feedback LED.
- pressing the button briefly triggers a reset
- pressing the button > 4 seconds triggers a shutdown
A status LED will indicate whether a reboot or shutdown has been initiated and will just blink once every 10 seconds to show that the computer is running and just doing its thing.
[[File:SP0620.jpg|200px|thumb|none|Rpi shutdown button]]
Schematic:
[[File:Rpi-shutdown-button-schematic.png|none]]
The current draw for each individual GPIO pin must stay below 16mA, and the total draw for the whole 3.3V power rail must stay below 50mA.
Using a 1k resistor for an LED we will have a current draw of less than 4mA.
Parts list:
The pushbutton with LED illumination I used for this project was purchased from Jaycar.
* Part Number: SP0620 - SPST PCB Mount Tactile - Metallic Vertical with LED - Red
http://www.jaycar.com.au/Electromechanical-Components/Switches/Tactile/SPST-PCB-Mount-Tactile---Metallic-Vertical-with-LED---Red/p/SP0620
* 2x 1k Ohm 1/4W resistors
* 1x 3-pin .1" pitch IDC header
* 10cm ribbon cable (three wires)
* heat shrink (2mm diameter)
How to connect everything:
* strip a short bit of insulation on three wires of the ribbon cable from one end
* cut three small bits of heat shrink and shove over each of the three stripped wires
* solder the ends of the three stripped wires to the 3-pin IDC header
* cover the connections with heat shrink and apply heat to shrink them in place
* from the other end of the ribbon cable, cut the middle and one outer wire 5cm shorter
* trim the leads from the two resistor so that only a short bit of wire remains
* solder a resistor on each end of the two wires
* solder the cut-off 5cm pieces of wire to each of the resistor's other end
You should now have something like this:
[[File:Rpi-button-cable.jpg]]
* shove some short bits of heat shrink over the two resistors so the connections are insulated
* trim the ends of the two wires with resistors so that all wires are the same length
* familiarise yourself with the pinout of the pushbutton
[[File:Rpi-pushbutton-pinout.jpg]]
* bend pin 1 from switch 1 so it touches the Cathode pin of the LED and solder these together
* solder the ribbon cable wire without resistors to the joint connection from the previous step (this will be the GND wire)
* solder the middle wire to the Anode (the long pin in the middle of the switch, this will be the LED wire)
* and lastly, solder the remaining wire to pin 2 of switch 1
When all done, the connections to the switch should look something like in the below picture.
[[File:Rpi-shutdown-button-text.jpg|500px|thumb|none|Rpi shutdown button]]
Use this image to connect the IDC header onto the Raspberry Pi connection header pins.
Python button-listener program:
[[File:Rpi-shutdown-monitor.zip]]
* installing the software
install the python gpio library:
<pre>
apt-get install python-rpi.gpio
</pre>
Copy the python button-listener program to /usr/local/bin/shutdown-monitor.py
Then, set the permissions:
<pre>
chmod 700 /usr/local/bin/shutdown-monitor.py
</pre>
add to the command to the startup script:
<pre>
vi /etc/rc.local
</pre>
near the end of the script, but above the 'exit 0', enter the following line:
<pre>
/usr/bin/python /usr/local/bin/shutdown-monitor.py > /dev/null 2>&1 &
</pre>
The full code for the shutdown monitor:
<pre>
# This script will wait for a button to be pressed and then shutdown
# the Raspberry Pi.
import time
from time import sleep
import RPi.GPIO as GPIO
import os
GPIO.setmode(GPIO.BOARD)
# Pin 21 will be input and will have its pull-up resistor (to 3V3) activated
# so we only need to connect a push button with a current limiting resistor to ground
GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# GPIO10 (on pin 23) will be our LED pin
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.HIGH)
sleep(1)
GPIO.output(23, GPIO.LOW)
int_active = 0
# ISR: if our button is pressed, we will have a falling edge on pin 21
# this will trigger this interrupt:
def Int_shutdown(channel):
# button is pressed
# possibly shutdown our Raspberry Pi
global int_active
# only react when there is no other shutdown process running
if (int_active == 0):
int_active = 1
pressed = 1
shutdown = 0
# turn LED on
GPIO.output(23, GPIO.HIGH)
# count how long the button is pressed
counter = 0
while ( pressed == 1 ):
if ( GPIO.input(21) == False ):
# button is still pressed
counter = counter + 1
# break if we count beyond 20 (long-press is a shutdown)
if (counter >= 20):
pressed = 0
else:
sleep(0.2)
else:
# button has been released
pressed = 0
# button has been released, dim LED, count cycles and determine action
GPIO.output(23, GPIO.LOW)
# count how long the button was pressed
if (counter < 2):
# short press, do nothing
pressed = 0
int_active = 0
else:
# longer press
if (counter < 20):
# medium length press, initiate system reboot
print("rebooting..")
# run the reboot command as a background process
os.system("shutdown -r 0&")
# blink fast until the system stops
blink = 1
while (blink > 0):
sleep(0.15)
GPIO.output(23, GPIO.HIGH)
sleep(0.15)
GPIO.output(23, GPIO.LOW)
else:
# long press, initiate system shutdown
print("shutting down..")
# run the shutdown command as a background process
os.system("shutdown -h 0&")
# blink slow until system stops
blink = 1
while (blink > 0):
sleep(1)
GPIO.output(23, GPIO.HIGH)
sleep(1)
GPIO.output(23, GPIO.LOW)
# Now we are programming pin 21 as an interrupt input
# it will react on a falling edge and call our interrupt routine "Int_shutdown"
GPIO.add_event_detect(21, GPIO.FALLING, callback = Int_shutdown, bouncetime = 1000)
# blink once every couple of seconds while waiting for button to be pressed
while 1:
time.sleep(10)
# only blink when the button isn't pressed
if ( GPIO.input(21) == True ):
# only blink when there's no shutdown in progress
if (int_active == 0):
GPIO.output(23, GPIO.HIGH)
sleep(0.1)
GPIO.output(23, GPIO.LOW)
sleep(0.1)
# That's all folks!
</pre>
2296f384e15730bdae1495ca378998614b60ae06
Programs
0
72
3432
3395
2020-12-17T04:59:20Z
Admin
1
wikitext
text/x-wiki
Some of my Electronics projects work in a client-server type fashion where the Electronics project is enhanced by (or in some case cannot work without) some form of counterpart in the form of a piece of software that resides on another device (e.g. a PC running some kind of operating system).
In other cases I have written software that runs stand-alone on a system (e.g on Windows or Linux or on a mobile phone).
This is the top page that lists the various categories. Where possible I have added the specific application for it.
==By Language==
* [[C and C++]]
* [[Java]]
* [[Assembler]]
* [[Linux_Bash]]
* [[php]]
* [[DOS_Batch]]
* [[Javascript]]
* [[Python]]
==By Target Device==
* [[Android]]
* [[Nokia]]
* [[PC]]
* [[Microcontrollers]]
==Third-Party device drivers==
* [[CH340-UART]]
3894221f2c001798684b10a8c4a625ee4b28c84c
Python
0
844
3481
3440
2020-12-23T03:28:19Z
Admin
1
wikitext
text/x-wiki
python things
* [[python-datastructures]]
Data structures provide ways to store, access and minipulate collections of data. Python has several built-in implementations of data structures and this page will attempt to show the differences as well as provide examples on how to use them.
943f08d935b183aec6752e8e1e6a6fde90502d3d
Python-datastructures
0
846
3482
3480
2020-12-23T03:29:03Z
Admin
1
wikitext
text/x-wiki
"In computer science, a data structure is a data organization, management, and storage format that enables efficient access and modification. More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data."
-- source: Wikipedia
Python knows how to work with of several types of data structures without the need to import additional libraries. Sometimes you do need to import a library to provide support (e.g. json, csv, sql) but most of these are already available when you have python installed. In rare cases you may need to build or acquire a third-party library for data structure support.
In these pages we mainly look at the most common data structures in python:
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Examples</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|style="background-color:#f2f2f2;"|<b>Characteristic</b>
|-
|[[Tuple]]
|('January', 'February', 'March', 'April', 'May')
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
|Once set, values cannot be changed
Referenced with index
|surrounded by one single open and closed parenthesis
elements separated by a comma
Strings are enclosed by apostrophes or quotes
|-
|[[python-lists|List]]
|[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
['red', 'green', 'orange', 'blue']
|Values can be modified, added, deleted
Referenced with index
|surrounded by one single open and closed square bracket
elements separated by a comma
Strings are enclosed by apostrophes or quotes
|-
|[[Dictionary]]
|{'Joe':02079343, 'Alice':010534045, 'Bob':01084523}
{'x':234, 'y':345, 'z':456}
|Values can be modified, added, deleted
Referenced with a key
|surrounded by one single open and closed curly brace
elements separated by a comma
each element contains one key and one value
key and value are separated by a colon
key maybe a string or a number
strings (key or value) are enclosed by quotes
keys must be unique
|-
|[[Set]]
|([1029, 1238, 7821, 4312, 2716])
|Once set, values cannot be modified
Set values can be added and removed
Set may only contain unique values
Unordered
|single square brackets surrounded by single parenthesis
elements separated by a comma
strings are enclosed by apostrophes or quotes
|-
|[[json]]
|[{ "first": "Joe', "hobbies": "swimming, running" }
{ "first": "Carol', "hobbies": "cycling, climbing" }]
|Values can be modified, added, deleted
Referenced with a key
|surrounded by one single open and closed curly brace (1x record)
multiple records surrounded by one single square open and close bracket
records surrounded by curly braces
record elements separated by a comma
each element contains one key and one value
key and value are separated by a colon
keys surrounded by double quotes
strings are enclosed by apostrophes or quotes
|-
|[[csv]]
|silver,32423,joe bloggs,"8,5",023-32425634,,,type=1,f
|once set, values cannot be modified
|elements separated by a comma
one record per line
elements enclosed by quotes if string contains a comma
|}
713f4a3e131ff4f478503f428472cb68886da31b
Python-lists
0
845
3487
3486
2020-12-23T03:40:59Z
Admin
1
wikitext
text/x-wiki
parsing lists in python
(back to [[python-datastructures]])
===Example #1 (some basic list manipulation)===
<pre>
#
#
# python list examples
#
# #1 one-dimensional ('flat/unnested') lists
list1 = [1,2,3.14,'red','green']
# NOTE#1: strings may be surrounded by apostrophes or quotes or mixed
# the output will convert quotes to apostrophes
#
#goodlist = [1,2,3.14,'red','green'] # strings with apostrophes
#goodlist = [1,2,3.14,'red',"green"] # mixed apostrophes and quotes
#goodlist = [1,2,3.14,"red","green"] # all quotes
# NOTE#2: don't surround lists with quotes or apostrophes!
#
#wronglist = '[1,2,3.14,"red","green"]' # list surrounded by apostrophes
#wronglist = "[1,2,3.14,'red','green']" # list surrounded by quotes
print('list1: ' + str(list1) )
# NOTE#3: concatenate a list to a string by surrounding it with 'str()'
#
# print('list1: ' + list1) # incorrect
# print('list1: ' , list1) # ok, but shows parenthesis and quotes from string
# print('list1: ' + str(list1)) # correct
# print(list1) # correct (but not concatenated)
for x in list1:
print(x)
print('')
print('')
print ('show 4th element: ' + str(list1[3]))
print('')
print('modify 4th element from \'red\' to \'blue\'')
list1[3] = 'blue'
print('')
print ('show 4th element: ' + str(list1[3]))
print('')
print('')
print('add new element \'orange\' at the end:')
list1.append('orange')
print('')
print('list1: ' + str(list1))
print('')
print('')
print('insert new element \'17\'at the beginning:')
list1.insert(0,17)
print('')
print('list1: ' + str(list1))
print('')
print('')
print('delete element with name \'green\':')
list1.remove('green')
print('')
print('list1: ' + str(list1))
print('')
print('')
# NOTE#4: if a list contains multiple elements with the same value then 'remove' only removes the first matching element
print('delete the third element:')
list1.pop(2)
print('')
print('list1: ' + str(list1))
print('')
print('')
# NOTE#5: use 'pop()' to delete the last element
</pre>
===Example #2 (nested lists)===
<pre>
#
#
# python list examples
#
# #2 - nested lists
list2 = ['joe', 186, ['swimming', 'running'], [1983,2001,2018], 5, 2]
print('list2: ' + str(list2) )
for x in list2:
print(x)
print('')
print('')
print('iterate over the third element (index 2)')
for x in list2[2]:
print(x)
print('')
print('')
print('show the length of the list')
print('list2: ' + str(list2) )
print('length: ' + str(len(list2)) + ' (counting nested lists as 1)' )
print('')
print('')
print('show which elements are lists:')
for x in list2:
if isinstance(x, list):
print(str(x) + ' is a list')
else:
print(str(x) + ' is not a list')
print('')
print('')
print('list2: ' + str(list2) )
print('add the element \'walking\' to the list at index 2:')
list2[2].append('walking')
print('list2: ' + str(list2) )
print('')
print('')
print('list2: ' + str(list2) )
print('remove the first element from the list at index 3:')
list2[3].pop(0)
print('list2: ' + str(list2) )
print('')
print('')
</pre>
===Example #3 (bigger nested list)===
<pre>
#
#
# python list examples
#
# #3 - bigger nested list
list3 = [[110.3, 111.5,110.1, 110.2],[110.2,112.7,109.4,111.6],[111.6,109.3,110.8,111.5]]
print('list3: ' + str(list3) )
print('')
print('print each nested list:')
for x in list3:
print(x)
print('')
print('')
print('only show the second and third element of each nested list')
for x in list3:
print(x[1], x[2])
print('')
print('')
print('print the index position and the first element of each nested list')
for (i,x) in enumerate(list3):
print(i, x[0])
print('')
print('')
</pre>
===Example #4 (list containing a dictionary)===
<pre>
#
#
# python list examples
#
# #4 - list containing a dictionary
list4 = [{'symbol': 'ETHBTC', 'price': '0.03014900'}, {'symbol': 'LTCBTC', 'price': '0.00413500'}]
print('list4: ' + str(list4) )
print('')
print('print each nested dictionary:')
for x in list4:
print(x)
print('')
print('')
# NOTE: below is an example of parsing a dictionary, which is not a list.
# See examples for dictionaries for more details
#
print('iterate through each dictionary')
for x in list4:
marketname = x['symbol']
price = x['price']
print('market name: ' + str(marketname))
print('price: ' + str(price))
print('')
print('')
print('')
</pre>
204e279d43dc13fbe10d735a810ff1e008e17e9f
Resize Root Filesystem
0
266
3496
3495
2021-01-20T09:21:35Z
Admin
1
wikitext
text/x-wiki
This procedure details how to copy the current filesystem to a new disk. This is a preferred scenario when:
*the current root filesystem is becoming too small
*you wish to shrink the existing root filesystem (think vm's)
Steps to achive the copy are:
* create or attach a new disk
* create a root (and swap partition) on the disk (fdisk /dev/...)
* format the disk with EXT2
* mount the disk to a directory on the live system
* copy all files to the new disk
* copy the special device files (?)
* chroot into the new disk
* install the bootloader to the MBR of the new disk
Copy command:
<pre>
(cd / ; tar -cf - . --one-file-system) | (cd /mnt/ ; tar xvfpB -)
</pre>
Find out the new disk's UUID:
<pre>
ls -l /dev/disk/by-uuid/
</pre>
* Update the new UUID in /etc/fstab
* Update the new UUID in /boot/grub/grub.cfg
Install bootloader:
There are (as far as I know of) three ways of installing GRUB onto the new disk.
1 * After copying all files, remove the old drive and boot off a live Linux CD (e.g. Knoppix) (the idea here is that hd0 is the new drive and issuing the grub-install command will simply install on hd0.
2 * Swap the drives (master becomes slave, slave becomes master) and in the BIOS designate to boot of the second disk. (again, grub will install on hd0 which is the new disk)
3 * with the new disk attached as /dev/sdb, instruct GRUB to install there but to refer to it as /dev/sda (or hd0 as we want). (my preference)
Method 1 and 2
http://www.linuxjournal.com/content/copy-your-linux-install-different-partition-or-drive
Method 3
(with the new disk (/dev/sdb) still mounted at /mnt/)
<pre>
grub-install -d /mnt /dev/sdb
</pre>
* shutdown
* take out old disk, and replace with the new disk as the primary boot disk
* start the machine
GRUB v1 only:
When you're back in the O/S update the menu.lst to make sure the correct boot device (e.g. /dev/sda) is used.
<pre>
grub-install /dev/sda
update-grub
</pre>
* reboot and all should be fine
===Resize Filesystem in an image===
So now you have a dd image of your disk and found out that the device you wish to restore it to is smaller in size...
All good, what we do next is to resize the filesystem inside the dd image.
Just to be sure we understand the terminology:
* a block device is the physical capacity of a storage device (e.g. an 8GB Flash drive)
* a partition is a logical storage container that is created on the block device. A block device can hold multiple partitions.
* a filesystem is a logical arrangement of data that is used by an operating system to save and read files. A partition usually holds only one filesystem.
If we want to make a larger partition fit on a smaller partition we need to make sure that the used space inside the larger partition doesn't exceed the size of the smaller partition. Once we know this, the process is relatively simple:
* attach a loop device to the disk-image (using losetup)
* run a filesystem-check on the partition we wish to resize (using e2fsck)
* shrink the filesystem to the desired size (using resize2fs)
* shrink the partition to a size that is (slightly) larger than the filesystem
After this, we can just write the disk image to the (smaller) block device without running into disk space issues
The Process:
Attach a loop device to the various partitions inside the disk image:
<pre>
losetup --find --partscan imagefile.dd
</pre>
Reveal the partition devices that were assigned:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <--- imagefile.dd
259 0 42811 loop0p1 <--- partition 1 inside imagefile.dd
259 1 7281664 loop0p2 <--- partition 2 inside imagefile.dd
</pre>
Run a filesystem check:
<pre>
root@pi:/data# e2fsck /dev/loop0p2
e2fsck 1.44.5 (15-Dec-2018)
/dev/loop0p2 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 391641, i_blocks is 16, should be 8. Fix<y>? yes
Inode 391642, i_blocks is 16, should be 8. Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(1393664--1393838) -(1394673--1394890) -(1612165--1612167) -1612891 -1612982 -(1615784--1615789) -1622693 -1622836 -1622855 -(1626336--1626342) -(1638720--1638734) -(1638841--1638851) -(1639248--1639258) -1665037 -1666053 -(1668096--1668097)
Fix<y>? yes
Free blocks count wrong for group #49 (4771, counted=4801).
Fix<y>? yes
Free blocks count wrong for group #50 (14121, counted=14151).
Fix<y>? yes
Free blocks count wrong (576554, counted=598442).
Fix<y>? yes
/dev/loop0p2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/loop0p2: 262820/441728 files (0.3% non-contiguous), 1221974/1820416 blocks
</pre>
(so a few errors there, but you may not see any errors)
Shrink the filesystem to the desired size:
<pre>
root@pi:/data# resize2fs /dev/loop0p2 7000M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/loop0p2 to 1792000 (4k) blocks.
The filesystem on /dev/loop0p2 is now 1792000 (4k) blocks long.
</pre>
The filesystem should now be small enough to fit on our target block device. Since we no longer need to access the partitions inside the disk-image we can disconnect the loop devices from the disk image:
<pre>
losetup --detach /dev/loop0
</pre>
Next, we shrink the partition to a size that is (slightly) larger than the filesystem we just shrunk.
First, inspect the target block device and determine our start sector:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
</pre>
Orginally, the start sector of the 2nd partition began at 94208 so we'll leave it at that.
Then we need to calculate the end sector.
The resize2fs command used a value of 7000M. In Bytes, this is:
7,000 * 1024 (k) * 1024 (B) = 7340032000 Bytes
In 512-Byte blocks, this is: 7340032000 / 512 = 14336000
So the End-sector where this 7,000MB block needs to end is 94208 + 14336000 = 14430208
Let's add one more 512Byte block to give the filesystem enough room to fit in: 14430209
Then we can simply delete the partition from the block device and re-add it with the smaller size:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda <---- the disk of the system that we're currently working on
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <---- the disk-image dd file
259 0 42811 loop0p1
259 1 7281664 loop0p2 <---- the partition containing the filesystem we have just shrunk
8 16 7822336 sdb <---- the target block device (an 8GB Flash drive)
8 17 42811 sdb1 <---- the first partition (we'd like to keep as-is)
root@pi:/data# fdisk /dev/sdb <---- running fdisk on the target block device
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n <------ create a new partition (partition 2 was already gone)
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-15644671, default 2048): 94208 <----- where the original 2nd partition started
Last sector, +/-sectors or +/-size{K,M,G,T,P} (94208-15644671, default 15644671): 14430209 <---- our calculated end sector
Created a new partition 2 of type 'Linux' and of size 6.9 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@pi:/data#
</pre>
One final check:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
/dev/sdb2 94208 14430209 14336002 6.9G 83 Linux
root@pi:/data#
</pre>
Now we have created a smaller partition on the target block device that is just large enough to hold the smaller filesystem.
We can now write the disk-image dd file to the block device without running into disk space issues.
<pre>
dd if=diskimage.dd of=/dev/sdb bs=1M
</pre>
83e070aa017c134efbf047497c836a8829293530
File:Kiwisdr-arstechnica-2021-07-15.png
6
847
3507
2021-07-21T00:36:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Main Page
0
1
3511
3510
2021-07-21T00:38:00Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
Click here for the KiwiSDR waterfall page: https://www.marcelpost.com:8073
[[File:Kiwisdr-waterfall.jpg|left|link=https://www.marcelpost.com:8073]]
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
IMPORTANT SECURITY MESSAGE FOR KIWISDR OWNERS:
[[File:Kiwisdr-arstechnica-2021-07-15.png|left|link=https://arstechnica.com/gadgets/2021/07/for-years-a-backdoor-in-popular-kiwisdr-product-gave-root-to-project-developer/]]
https://arstechnica.com/gadgets/2021/07/for-years-a-backdoor-in-popular-kiwisdr-product-gave-root-to-project-developer/
b97441091edb47b8742e21bd5560001bf71b3441
Movies
0
5
3512
3102
2021-08-17T03:51:48Z
Admin
1
wikitext
text/x-wiki
==Here is a selection of movies I can recommend and suggestions from others==
===Movies I can recommend:===
* Cloud Atlas (2012)
* Inception (2010)
* District 9 (2009)
* Memento (2000)
* The Matrix (1999)
* Lock stock and two smoking barrels (1998)
* The Big Lebowski (1998)
* Fargo (1996)
* Pulp Fiction (1994)
* Resevoir Dogs (1992)
* Down by Law (1986)
* Amadeus (1984)
* Blade Runner (1982)
* The Thing (1982)
* Das Boot (1981)
* Alien (1979)
* Halloween (1978)
* Monty Python and the Quest for the Holy Grail (1975)
* The Exorcist (1973)
* 2001: A Space Odyssey (1968)
===Movies suggested by others:===
* arrival
* Band
* office killer
* karakter
* de aanslag
* reykjavik rotterdam
* code 46
* aaltra
* thunderbolt and lightfoot
* kannibal the musical
* burlesque
* idiocracy
* meet the feebles
* the magic pudding
* revolver
* steam punk
* city of lost children
* amores perros
* trancendent man
* thank you for smoking
* the cove
* roger dodger
* the day after tomorrow
* high fidelity
* point blank
* Salt and Fire (2016)
* Intersect (2020)
==Silly Movie things==
What I cannot for the life of me understand is that in this day and age in movies:
[[File:Plane-landing.jpeg]]
* the sound of the wheels touching the tarmac of an airplane landing is instant. Sound travels slower than light. (same goes for lightning strikes)
[[File:Car-on-dirt-road.jpeg]]
* tyres make squealing sounds on a dirt road. There is not enough friction to make the rubber sound like that.
[[File:Explosions-in-space.jpeg]]
* space ship engines and explosions observed from outer space make sound. They do not because sound does not travel well in a vacuum.
[[File:Monitor-text-beeps.jpeg]]
* text on a computer screen makes noise when it is printed. It does not.
[[File:Satellite-in-orbit.jpeg]]
* when satellites are shown in an orbit around the earth the sound of 1950's Telex RTTY is heard. Or Morse code. Or both!
[[File:Knife-stabbing.jpeg]]
* when someone is stabbed with a knife it makes a noise as if cutting through plated steel. A knife through meat is very silent. Try it.
[[File:Bomb-countdown.jpeg]]
* countdown timers are always too slow. Do you own counting and you can sometimes find movie-seconds that last 10x as long.
[[File:Camera-on-a-ship.jpeg]]
* movies shot on a boat often have the camera moving slowly clockwise and counterclockwise as if the boat is bobbing. I'm not even gonna explain this.
[[File:Binoculars.jpg]]
* the view through binoculars is like a figure-8 on it's side. This is impossible, it's round!
[[File:Explosion.jpeg]]
* they tap the camera when there's an earthquake or an explosion, but no-one in the picture moves.
[[File:Space-helmet-lights.jpg]]
* space helmets with lights on the inside. Why would blinding yourself with light up-close be practical?
[[File:Silly-image-enhancement.jpg]]
* image enhancement absurdity.
[[File:Rifle-magazine.jpg]]
* semi-automatic machine gun cartridge capacity absurdity (common cartridges only hold 30 rounds)
b2bff54b8a89ffca0aed1b71ee434abcb4dbed54
Ffmpeg-examples
0
837
3513
3431
2021-08-17T07:29:32Z
Admin
1
wikitext
text/x-wiki
Bunch of ffmpeg examples on one page
<pre>
ffmpeg -y -i INFILE.mp4 -vcodec mpeg4 -vb 200k -acodec libvo_aacenc -ac 1 -ab 94000 -ar 16000 OUTFILE.mp4
ffmpeg -y -i INFILE.mp4 -c:v libx264 -crf 23 -vb 200k -c:a copy OUTFILE.mp4
truncate without re-encoding
ffmpeg -y -i INFILE.mpg -ss mm:ss -t mm:ss -c copy OUTFILE.mp4
convert jpg images to video:
ffmpeg -r 1/0.1 -f concat -i filelist.txt -r 25 -c:v libx264 -pix_fmt yuv420p -y OUTFILE.mp4
(where filelist.txt contains the list of image file names, e.g. img001.jpg, img002.jpg)
or
ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' -s 1280x720 -c:v libx264 -crf 23 out.avi
Video bitrate:
Rule of thumb: divide your target size (in bits) by the video length (in seconds)
Example 1: for a 6 second video to be 10MBytes, use (10,000,000 / 6) = 1.6M
-vb 1600k
Example 2: for a 30 minute video to be 400MB, use (400,000,000 / 1,800) = 222,222 = 222k
-vb 222k
Note: lower CRF (Constant Rate Factor) equals higher quality (and larger files)
(max bitrate over wifi around 1Mbps)
Audio codecs and options:
-acodec libvo_aacenc -ac 1 -ab 94000 -ar 16000
-acodec aac -ac 2 -ab 128k
-acodec copy
-an
Time selection:
-ss = start-time offset (0 = begin, 5:00 = after 5 minutes)
-t = duration (1:00 = one minute, 1:45:00 = 1 hour and 45 minutes)
-ss 2:23
-ss 1:49 -t 1:58:02
-t 2:15:06
for example, to remove the first 10 seconds of a 1.5 hour movie:
ffmpeg -i infile.mp4 -ss 0:10 -t 1:30:00 -c copy outfile.mp4
Screen resolution:
-s 1280x720
Resize and Crop options:
Resize: -vf scale=iw*2:ih
-vf "setsar=1/0.75" // Set the pixel sample aspect ratio.
-vf "setdar=64:27" // Set the frame display aspect ratio.
Scale by percentage:
-vf scale=iw/2:-1
Crop: -vf crop=<width>:<height>:<offset from left>:<offset from top>
-vf crop=680:440:300:50
example:
Remove black horizontal bars at the top and bottom.
The original video is 652x480 (width x height) but black bars only leave a useful video with an area of 652x326 pixels.
Since the top and bottom bars are each 77 pixels in height, we offset the area by 77 pixels from the top.
ffmpeg -y -i inputfile.mp4 -vf crop=652:326:0:77 outfile.mp4
Joining multiple videos:
- create a text file containing a list of the videos you wish to join
Syntax: file <filename>
Example:
file /path/to/file/video1.mp4
file /path/to/file/video2.mp4
file /path/to/file/video3.mp4
- join (concatenate) command:
ffmpeg -f concat -i myvideolist.txt -c copy allvideos.mp4
if you need to join multiple videos with differing bitrates/fps then you will need to re-encode them all to the same format first.
Something like:
ffmpeg -i video1.mp4 -filter:v fps=30 -vcodec libx264 -c:a copy video1_reencoded.mp4
keyframes:
-force_key_frames 1
</pre>
a0f114e36d4f1417d04a3e0ec552106b5503832d
LTSpice
0
848
3515
2021-09-25T01:36:00Z
Admin
1
Created page with "LTSpice is a free electronics simulation program from Analog Devices (originally made by Linear Technologies). It can be downloaded from their website: https://www.analog.co..."
wikitext
text/x-wiki
LTSpice is a free electronics simulation program from Analog Devices (originally made by Linear Technologies).
It can be downloaded from their website:
https://www.analog.com/en/design-center/design-tools-and-calculators.html
If the component you want to use in your circuit is not available you can import one.
LTSpice models are available in two types:
* Model (.mod, model)
- these are simple components such as transistors and diodes
* SubCircuit (.sub, subckt)
- these are more complex parts made up of simpler Spice parts (diodes, transistors, resistors etc)
comp (component)
sub ()
lib (library)
inc (include)
sym (symbol)
447c4f4cfb9ae77023b0164a68c770d02a5aed85
Mcu 0126-iambic-keyer
0
664
3519
3518
2021-10-11T09:50:26Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo speaker (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo buzzer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD)
</code>
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
1ad3ed3fac59605b9eb0bee2c9c4929a1dece275
File:Sun-Hemmi P280-P281.pdf
6
849
3520
2021-10-22T22:55:36Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Faber-Castell 1970 Catalog.pdf
6
850
3522
2021-10-22T23:03:40Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:M138 Dieterich-Post Catalog 1968.pdf
6
851
3524
2021-10-22T23:10:01Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Sliderules
0
541
3525
3523
2021-10-22T23:10:29Z
Admin
1
wikitext
text/x-wiki
Some of the slide rules I have gathered over the years:
==Sun Hemmi P280==
Low cost two color simplex rule. Plastic body rule with unusual blue tinted slide and two color scales. Basic student rule with trig scales, the T, ST and S scales have complimentary angles marked in red, and the scales are all self-documenting on the right hand side. Reversible slide has 3 log log scales. Unbreakable plastic cursor.
[[File:Sun-hemmi-p280 front.jpg|400px|thumb|none|Sun Hemmi P280 (front)]]
[[File:Sun-hemmi-p280 back.jpg|400px|thumb|none|Sun Hemmi P280 (back)]]
Manual: [[File:Sun-Hemmi P280-P281.pdf]]
* body: plastic
* cursor: plastic
* length: 27cm
* Scales: 13
* Front scale: T, K, A, [ B, CI, C, ] D, L, S, ST
* Slide Reverse: [ LL1, LL2, LL3 ]
* country of origin: Japan
* year of manufacture: October 1972 [Date Code: WJ]
==Sun Hemmi Teledyne 44CA-600 Versalog II==
About June, 1973. The last Post Versalog II is made. The first Teledyne-Post Versalog II (new model number 44CA-600) appeared a little before then, in June 1972. For a long time, the last T-P Versalog we knew of had the date code WH (August 1972), but a recently acquired Versalog 44CA-600 example has surfaced with the date code XF, indicating June 1973 production.
[[File:Sun-hemmi-versalog-II front.jpg|400px|thumb|none|Sun Hemmi Versalog II (front)]]
[[File:Sun-hemmi-versalog-II back.jpg|400px|thumb|none|Sun Hemmi Versalog II (back)]]
* body: laminated bamboo
* cursor: metal/plastic
* length: 27cm
* Scales: 24
* Front: logX, LL/1, LL/2, LL/3 [ T/T, SecT/ST, Cos/S, C ] D, LL3, LL2, LL1
* Back Scale: LL/00, K, A, DF [ CF, CIF, CI, C ] D, R1, R2, LL0
* country of origin: Japan
* year of manufacture: August 1972 [Date Code: WH]
==Faber Castell 52/82==
Plastic body duplex rule with trademark green accent stripes on fundamental scales, and multi-line cursor. Rule face is self-documenting, with scale functions listed, as well as scale letters.
[[File:Faber-Castell-52-82 front.jpg|400px|thumb|none|Faber-Castell 52/82 (front)]]
[[File:Faber-Castell-52-82 back.jpg|400px|thumb|none|Faber-Castell 52/82 (back)]]
* body: plastic
* cursor: plastic
* length: 10" (25.4)cm
* Scales: 22
* Front scales: L K A [ B BI CI C ] D LL1 LL2 LL3
* Back scales: T T2 DF [ CF CIF S' C ] D S ST P
* Country of origin: Germany
* year of manufacture: August 1961 [Date Code: 861]
==Faber Castell 67/87==
Plastic body simplex 15cm rule with 4-line cursor, two color (red/black) scale markings, and inch side ruler, reversible slide has S, ST, and T scales. Rule is self documenting on right hand side for all scales.
[[File:Faber-castell-67-87 front.jpg|400px|thumb|none|Faber-Castell 67/87 (front)]]
[[File:Faber-Castell-67-87 back.jpg|400px|thumb|none|Faber-Castell 67/87 (back)]]
Catalog in which this slide rule appears: [[File:Faber-Castell 1970 Catalog.pdf]]
* body: plastic
* cursor: plastic
* length: 15cm
* Scales: 10 + ruler
* Front scales: K, A [ B, Ci, C ] D, L
* Back ruler scales: S, ST, T
* Country of origin: Germany
* year of manufacture: April 1959 [Date Code: 459]
==Pickett N1006-ES==
Pickett 5" Trigonometry Duplex Rule. This is the "Eye Saver" yellow version of this rule,
[[File:Pickett-n1006-es front.jpg|400px|thumb|none|Pickett N1006-ES (front)]]
[[File:Pickett-n1006-es back.jpg|400px|thumb|none|Pickett N1006-ES (back)]]
Catalog in which this sliderule appears: [[File:M138 Dieterich-Post Catalog 1968.pdf]]
* body: aluminium
* cursor: nylon/plastic with metal screws
* length: 5" (12.7cm)
* Scales: 17
* Front scales: K, A [B, ST, T, S, C] D, DI
* Back scales: Ln, DF [CF, CIF, CI, C] D, L
* country of origin: USA
* year of manufacture: 1959
==Pickett N600-ES==
Pickett 5" Trigonometry Duplex Rule. This is the "Eye Saver" yellow version of this rule,
[[File:Pickett-N600-es front.jpg|400px|thumb|none|Pickett N600-ES (front)]]
[[File:Pickett-N600-es back.jpg|400px|thumb|none|Pickett N600-ES (back)]]
Catalog in which this sliderule appears: [[File:M138 Dieterich-Post Catalog 1968.pdf]]
* body: aluminium
* cursor: nylon/plastic with metal screws
* length: 5" (12.7cm)
* Scales: 19
* Front scales: LL1, A [B, ST, T, S, C] D, DI, K
* Back scales: LL2, DF [CF, Ln, L, CI, C] D, LL3
* country of origin: USA
* year of manufacture: 1962-1964
==The Scales==
After seeing so many slide rules it may appear confusing to see so many scales close together one one slide rule. Here is a list of the most common slide rule scales.
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Letter(s)</b>
|style="background-color:#f2f2f2;"|<b>Description</b>
|style="background-color:#f2f2f2;"|<b>Applies to</b>
|style="background-color:#f2f2f2;"|<b>Colour</b>
|style="background-color:#f2f2f2;"|<b>Orientation</b>
|style="background-color:#f2f2f2;"|<b>Comments</b>
|-
|C
|Single Logarithmic, 1 Decade (1-10)
|Multiplication, division
|style="color:black"|Black
|left to right
|Usually found on slide
|-
|D
|Single Logarithmic, 1 Decade (1-10)
|Multiplication, division
|style="color:black"|Black
|left to right
|Usually found on body
|-
|A
|Double Logarithmic, 2 Decades (1-10-100)
|Powers of 2 and Square Roots
|style="color:black"|Black
|left to right
|Usually found on body
|-
|B
|Double Logarithmic, 2 Decades (1-10-100)
|Powers of 2 and Square Roots
|style="color:black"|Black
|left to right
|Usually found on body
|-
|K
|Triple Logarithmic, 3 Decades (1-10-100-1000)
|Powers of three and Cube Roots
|style="color:black"|Black
|left to right
|
|-
|L
|linear scale (0-1)
|Mantissa for Common (base 10) Logs
|style="color:black"|Black
|left to right
|
|-
|S
|Sine scale
|Sines between 5.7° and 90°
|style="color:black"|Black
|left to right
|
|-
|<span style="color:black">S</span><span style="color:red">(cos)</span>
|Cosine scale
|Cosines between 5.7° and 90°
|<span style="color:red">Red</span>
|right to left, combined with S scale
|
|-
|T
|Tangent scale
|Tangents between 5.7° and 90°
|Black
|left to right
|
|-
|ST
|Single Decade 1-10, basic scale folded at 57.3
|Sines, Tangents between 0.6° and 5.7°
|style="color:black"|Black
|left to right
|
|-
|Ci
|Inverted Single Decade 1-10
|
|<span style="color:red">Red</span>
|right to left
|
|-
|Di
|Inverted Single Decade 1-10
|
|<span style="color:red">Red</span>
|right to left
|
|-
|Cf
|Folded Single Decade 1-10
|
|style="color:black"|Black
|left to right
|
|-
|Df
|Folded Single Decade 1-10
|
|style="color:black"|Black
|left to right
|
|-
|P
|Pythagorean Scale
|
|style="color:black"|Black
|left to right
|
|-
|LL1
|Log-Log scale 1
|Raising numbers to arbitrary powers
|style="color:black"|Black
|left to right
|
|-
|LL2
|Log-Log scale 2
|Raising numbers to arbitrary powers
|style="color:black"|Black
|left to right
|
|-
|LL3
|Log-Log scale 3
|Raising numbers to arbitrary powers
|style="color:black"|Black
|left to right
|
|-
|}
==Gauge Points==
Often used numbers such as Pi, e, conversions and other ratios can be found as Gauge Points on some scales. Here is a list of common gauge points.
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>Symbol</b>
|style="background-color:#f2f2f2;"|<b>Value</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Applicable to</b>
|style="background-color:#f2f2f2;"|<b>Scales</b>
|-
|g
|0.01745
|sin(1°)
|
|C,D
|-
|M
|0.31831
|1/π
|ratio of diameter to circumference
|A,B
|-
||
|0.78648
|π/4
|Area and Circumference of Circles
|C,B
|-
|//
|1.182°
|seconds in a radian, sin(1.1818)
|
|ST
|-
|C
|1.273
|4/π
|Volume of a cylinder
|C
|-
|/
|1.97°
|minutes in a radian, sin(1.97)
|
|ST
|-
|ℯ
|2.718281828
|Euler's Number
|Natural Logs, compound interest, half-life decay
|C
|-
|π
|3.141592654
|Pi
|ratio of circumference to diameter
|C
|-
|C1
|3.5683
|SQRT(40/π)
|volume of a cylinder
|
|-
|R
|57.299
|Reciprocal of Q
|1 radian = 57.3 degrees
|Ci
|-
|g′
|3437.74
|minutes in a radian
|Trig functions for small angles
|
|-
|g′′
|206264.8
|seconds in a radian
|Trig functions for small angles
|
|-
|}
4039b170e0dac18ea1e6a204bca7a27750b28e01
File:SLA-charge-stages.jpg
6
852
3532
2021-10-24T00:25:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:LM317-dropout-voltage.png
6
853
3534
2021-10-24T00:47:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0137-SLA-charge-controller
0
783
3539
3538
2021-10-24T01:04:52Z
Admin
1
wikitext
text/x-wiki
For me this charge controller is part of a bigger project, but since it should work fine as a stand-alone solution I thought I'd put it here for the world to see and use.
I will be using the 8-pin 8-bit ATtiny84 for this design.
This charge controller aims to do the following:
* use battery voltage sensing to detect whether the charging circuit should be activated or not.
* use a fixed charge current in combination with an LM317 to regulate charge current
* set final charge voltage using a trimpot (12V - 15V)
* enter sleep mode on the microcontroller to save power when the battery is charged.
* signal charge state with an LED
* minimal current draw when not charging (a few uA's)
* input voltage range (17V - 30V)
===OPTIONALLY:===
* use a boost converter to allow charging from low input voltages (e.g. 5V from a USB port).
The first version of the charge controller schematic:
[[File:0137 schematic v1.0.png|thumb|none]]
NOTE: the value of the charge-current resistor (right next to the LM317) in the schematic applies to R3 (shown as 20R). The final PCB has this resistor listed as R7!
[[File:0137 prototype.jpg]]
After breadboarding, this was the first prototype on perfboard of the SLA battery charger circuit.
It incorporates a tiny boost converter to allow charging a 12V battery from much smaller voltage sources.
[[File:0137 SLA-battery-charger pcb v1.0.jpg]]
First PCB (v1.0) with the IRF9540 for Q1. Working fine, but some improvements can still be made.
The next step will be to work out the following features:
* choosing a more powerful FET to control higher charge currents
===Sizing the Charge Controller FET Q1===
N-channel FETs Q2 and Q4 are just for switching the P-channel FETs to ground, so they can be low-power 2N7000 or BS138. The FET Q3 is used to switch on the voltage-divider network to sample the battery voltage and with the two resistors in series we'll see only a few mA's running through Q3, so no worries there either. However, P-channel FET Q1 is the one that will be switching the charge current (as regulated by the LM317) to the battery.
For low-power charging we can suffice with a BS250 in a TO-92 package. Although the datasheet for the BS250 rates the FET for a maximum heat dissipation of 830mW (about 55mA @ 15V), in general, a TO-92 package is only capable of dissipating a maximum power of 644mW, so the power to the battery during charging should not exceed 42mA @ 15V (taken 15V as the maximum charge voltage)
(how to size the LM317 feedback resistor... link here?)
This means that if we want to use a higher charge current than 42mA we will need a different FET for Q1. Most importantly, we'll need a FET in a package that can dissipate the heat better. A good upgrade for Q1 will be the IRF9540. This FET is in a TO-220 package and it can handle up to 50W. Now, this 50W rating is only if you have a big heatsink on the metal body of the FET. Without a heatsink you should not go much higher than about 1.5 Watts. If we take 1.5 Watt as our example with a non-heatsinked IRF9540, we should be able to charge the battery at (1.5 Watts / 15V = ) 100mA.
A small heat sink will go a long way in keeping the FET cool(er) and allowing the circuit to charge the battery at higher rates.
===Input voltage===
The input voltage to properly charge the battery is around 17 Volts. This seems rather high for charging a 12V battery. Why is this so?
When charging a discharged 12V SLA battery the voltage applied to the battery will change over time. This graph shows what's going on:
[[File:SLA-charge-stages.jpg]]
On the (solid line) voltage curve you can see that the starting voltage of a cell is around 2.1V. There are 6 of those cells in a 12V SLA battery, so the voltage on the terminals is (6 x 2.1V = ) 12.6V. Initially the charger will output the maximum current to the battery, this is called the Bulk Charge state. When the charging has raised the terminal voltage to 13.8V (6 x 2.3V per cell) the battery voltage is kept at 13.8V by applying less and less current, this is called the Absorption Stage. Once the current reaches a certain minimum the charging is almost completely stopped and it will just keep the battery at a specific voltage that it can comfortably sit at for extended periods of time, this is the Float state. For most 12V SLA batteries this is around 13.5 V.
The little battery charger from our project isn't quite that clever. It will simply apply the maximum current to the battery until it reaches the voltage as set by the trimpot and then stop charging. It will begin charging again when the battery voltage has dropped about 1 Volt below the setpoint voltage.
The trimpot allows for setting the maximum voltage between 12V and 15V so we will need to cater for the maximum voltage when determining our input voltage.
At 100mA The LM317 needs at least 1.6V overhead, but this will be operating the device with no margin. A common 'headroom' figure for the LM317 is about 3V but this will be when running it at much higher current. In our design I have chosen a headroom of 2 Volts, but that means it shouldn't be used for charging with more than 250mA. So for low-power charging conditions and a headroom of 2V dropout voltage on top of 15V as a maximum charge voltage we need to provide at least a 17V input voltage.
[[File:LM317-dropout-voltage.png]]
The maximum input voltage should not exceed 30V, this being the maximum input voltage rating of the 78L05 voltage regulator to power the ATTiny85 microcontroller.
ffdaeec2a6764be60fd27704ba3cf36623ec9aec
Capacitor types
0
854
3547
3546
2021-11-05T22:36:38Z
Admin
1
wikitext
text/x-wiki
Types of Capacitors
(in descending order of stability)
* NP0 (negative positive zero, aka 'C0G', aka 'NPO')
- extremely stable in rf oscillators
- temperature stable
- crystal oscillators
- variable frequency oscillators (VFO)
- beat frequency oscillators (BFO)
- rf coupling circuits
- temperature use -55C to 125C
- capacitance change +/- 0 to 30ppm/C
* (silver) mica
- stable over wide temperature range
- rarely fail
- often used for oscillators
- same use as NP0 (RF circuits)
- capacitance change +/- 0 to 50ppm/C
* polystyrene (film)
- good for oscillators
- stable but keep in cool temperatures
- capacitance changes permanently when heated too much
- used in solid state equipment (around tubes is too hot)
* ceramic
- rarely fail
- rf bypass capacitors
- never use for oscillators or tuned circuits
- slightly microphonic
- X5R (-55C to 85C)
- X7R (-55C to 125C)
- Y5V (-30C to 85C)
- Z5V (10C to 85C)
* PP/polypropylene (film) (orange/brown/green drop)
- rf coupling
- good for audio amps
- not for oscillators
- not very stable
* PET/polyester (film) (MKT, Mylar)
- heat and humidity resistance
* tantalum
- not for audio
- non-linear
- good for rf bypass
- good for timing (e.g. 555)
- available in capacitances well above 1uF
- polar
- temperature stable
* Electrolytic (aluminium film)
- poor stability
- available in capacitances well above 1uF
- good for timing (e.g. 555)
- polar
* paper in oil
- stability ok
- replace (paper goes acidic over time)
- replace with polypropylene
* foil capacitor (old style)
- stability ok
- replace with polypropylene
9bcf58d9e868a2699acd673445747dd20bad415c
Electronics
0
82
3548
3540
2021-12-12T05:37:31Z
Admin
1
/* Projects using an Atmel AVR Microcotroller */
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
79c58318d6c85443a8aa08d057023b36917a2105
3567
3548
2021-12-20T01:21:30Z
Admin
1
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
==Projects using an ESP8266 Microcotroller==
[[Wemos D1 Mini]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
4cc384d5de3edbb759de8838c295428f112244bf
3573
3567
2021-12-26T03:03:12Z
Admin
1
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny85_DS18B20]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
==Projects using an ESP8266 Microcotroller==
[[Wemos D1 Mini]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
9833eda33f5fed41845453716a11cdbec04dd735
3575
3573
2021-12-26T03:04:45Z
Admin
1
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny85_DS18B20]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[ATMega328_DS18B20]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
==Projects using an ESP8266 Microcotroller==
[[Wemos D1 Mini]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
3202e7b669b52756eceddc02358f718c7fbe2f06
3579
3575
2021-12-27T23:09:39Z
Admin
1
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0136-remote-433MHz-transmitter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny85_DS18B20]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[ATMega328_DS18B20]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
==Projects using an ESP8266 Microcotroller==
[[Wemos D1 Mini]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
8d4e33904eb2eb910e01c00407be77848b3faa35
3580
3579
2021-12-27T23:11:49Z
Admin
1
wikitext
text/x-wiki
[[Image:DIP8.jpg|150px]]
[[File:IC-SOIC8.jpg|100px]]
==Datasheets==
[[Datasheets]] A selection of various datasheets for electronic components.
==Microcontroller Presentation Notes==
[[mcu-notes-01]] Introduction to Atmel Microcontrollers
[[mcu-notes-02]] Getting Started with Arduino
==Projects using an Atmel AVR Microcotroller==
[[mcu_0046-lcd-3wire]]
[[mcu_0050-handheld-tempsensor]]
[[mcu_0051-lcd-i2c-board]]
[[mcu_0052-i2c-master]]
[[mcu_0053-AVR-Fuse-Resetter]]
[[mcu_0054-nokia-mbus-sms-tx-rx]]
[[mcu_0055-rs232-tempsensor]]
[[mcu_0056-nokia-48x84-i2c-board]]
[[mcu_0057-lcd-i2c-eval-board]]
[[mcu_0058-ATtiny85-eval-board]]
[[mcu_0059-ATtiny84-eval-board]]
[[mcu_0060-Voltage-data-logger]]
[[mcu_0062-LCD-48x84-RC-Enclosure-top-pcb]]
[[mcu_0088-AVR-programmer]]
[[mcu_0084-voltage-datalogger]]
[[mcu_0093-NiMH-battery-charger]]
[[mcu_0118-wireless-sensor-board]]
[[mcu_0126-iambic-keyer]]
[[mcu_0134-AD8307-power-meter]]
[[mcu_0137-SLA-charge-controller]]
[[mcu_0139-remote-433MHz-transmitter]]
[[mcu_0145-EEPROM-programmer]]
[[CNC-machine]]
==AVR Programmers==
[[pololu programmer]]
==Projects using a Microchip PIC16F84 Microcotroller==
[[mcu_0021-tempsensor]]
==Opamp-circuits==
[[opamp-filters]] High and Low-Pass filters for AFSK/APRS/Packet
==PCB Schematics and Design==
[[PCB designs]]
[[Diptrace]] Libraries
[[PCB antennas]]
==Microcontroller C code examples==
[[ATtiny85_ADC]]
[[ATtiny84_ADC]]
[[ATtiny84 enable pullup resistors]]
[[ATtiny85_PWM]]
[[ATtiny85_DS18B20]]
[[ATtiny84_WDT_sleep]]
[[ATtiny85_WDT_sleep]]
[[ATMega328 WDT sleep]]
[[ATMega328_DS18B20]]
[[AVR Functions and Libraries]]
[[Tips_n_Tricks]]
[[Arduino]]
==LTSpice==
[[LTSpice]]
==Moteino==
[[moteino-setup]]
==Power supplies and Energy management==
* Renewable energy
[[Solarpanels]]
[[Battery chargers]]
[[Solar PV Calculator]]
* Current draw of various devices
[[USB-currents]]
[[USB-device-currents]]
==Surface Mount FETs compared==
[[Surface Mount FETs compared]]
==Projects using an STM32 Microcotroller==
[[nanovna-upgrade]]
==Projects using an ESP8266 Microcotroller==
[[Wemos D1 Mini]]
See also: [[Electronics]], [[Datasheets]], [[Links:Electronics]]
==Capacitors==
[[capacitor types]]
87f13ba3e133583fb07fbe2b5d86654ac34d36f5
File:EEPROM STK12C68 a.jpg
6
856
3551
2021-12-12T07:14:16Z
Admin
1
STK12C68 with modifications (DS1225Y replacement)
wikitext
text/x-wiki
== Summary ==
STK12C68 with modifications (DS1225Y replacement)
893cfc7344d6015ad1d65f6df4b231cf5f0140bb
File:EEPROM STK12C68 b.jpg
6
857
3552
2021-12-12T07:14:37Z
Admin
1
STK12C68 with modifications (DS1225Y replacement)
wikitext
text/x-wiki
== Summary ==
STK12C68 with modifications (DS1225Y replacement)
893cfc7344d6015ad1d65f6df4b231cf5f0140bb
File:EEPROM-programmer arduino 74HC595 top.jpg
6
858
3554
2021-12-12T07:15:43Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:EEPROM-programmer arduino 74HC595 bottom.jpg
6
859
3555
2021-12-12T07:16:53Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0145 EEPROM programmer schematic.png
6
860
3557
2021-12-13T00:10:58Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:STK12C68 pinout.png
6
861
3562
2021-12-13T00:54:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0145-EEPROM-programmer
0
855
3566
3565
2021-12-13T01:29:53Z
Admin
1
wikitext
text/x-wiki
This programmer helped me write the calibration data of my Tektronix 2445B oscilloscope to a new chip.
The programmer works with 65,536 (64k) bit parallel-addressable RAM chips (8,192 words by 8 bits) such as the DS1225Y, STK12C68, and probably many others.
This design uses three IO pins from the arduino (clock, latch, data) to fill the two serial shift registers to set the address bits and then uses 8x IO pins from the arduino to set the 8-bit value bits for an address.
The chips I intended to program with this design only have 28 pins, which only leaves room for 13 address lines. This means that only addresses up to (2^13 =) 8,192 can be written to. This is why the 3 Most Significant Bits of the 2nd serial shift register are unused.
Schematic:
[[File:0145 EEPROM programmer schematic.png]]
The Arduino based EEPROM programmer, using two 74HC595 serial shift registers:
[[File:EEPROM-programmer arduino 74HC595 top.jpg]]
[[File:EEPROM-programmer arduino 74HC595 bottom.jpg]]
I built this programmer so that I could rescue my aging Tektronix 2445B oscilloscope. Inside this oscilloscope is a Non-volatile RAM chip that holds the calibration data. This data is unique to each oscilloscope and requires an elaborate calibration procedure and specialised test equipment to obtain and store this data inside the RAM chip. Without this data the oscilloscope is unusable. The original RAM chip that came with this oscilloscope is a Dallas DS1225Y. This chip will retain the data inside, but only if a constant voltage is applied. The manufacturers of this chip came up with a clever hack by adding a small button-cell battery and potting the chip inside a slightly bigger package. This is a neat solution, but only as long as the battery is able to provide enough power. Since the battery and chip are glued together it is almost impossible to swap out the battery for a fresh one.
Since I wanted to keep using my 2445B oscilloscope I decided to upgrade the RAM chip with a model that doesn't need an internal battery anymore. The option I went with is the Cypress STK12C68. It uses the same protocol and pinout for reading and writing data. It doesn't have (or needs) a battery, but it does need an external capacitor. The capacitor is only needed for write operations and even if the capacitor is disconnected the internal RAM still retains the data. This was an acceptable compromise.
The pinout of the STK12C68:
[[File:STK12C68 pinout.png]]
The new STK12C68 EEPROM chip after making the modifications for placement inside the 2445B oscilloscope:
[[File:EEPROM STK12C68 a.jpg]]
[[File:EEPROM STK12C68 b.jpg]]
Arduino code:
<pre>
/*
DS1225Y/STK12C68/FM16W08 EEPROM Programmer using 74HC595 serial shift registers
LSB <--------------------------------> MSB
+----------------+ +----------------+
| HC595 QA 15| --> A0 | HC595 QA 15| --> A8
| QB 1| --> A1 | QB 1| --> A9
| QC 2| --> A2 | QC 2| --> A10
data--->|14 SER QD 3| --> A3 +--------->|14 SER QD 3| --> A11
clock-->|11 SRCLK QE 4| --> A4 | clock-->|11 SRCLK QE 4| --> A12
latch-->|12 RCLK QF 5| --> A5 | latch-->|12 RCLK QF 5| NC
| QG 6| --> A6 | | QG 6| NC
| QH 7| --> A7 | | QH 7| NC
| QH' 9+----------+ | QH' 9| NC
+---+13 OE SRCLR 10+---+ +---+13 OE SRCLR 10+---+
| +----------------+ | | +----------------+ |
GND Vcc GND Vcc
address bits data bits
------------ ---------
Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q 5 6 7 8 9 10 11 12 <-- Arduino D-pins
H G F E D C B A H G F E D C B A
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 <-- [ DS1225Y ]
| | | | | | | | | | | | | | | | | | | | | | | |
NC NC NC | | | | | | | | | | | | +-- A0 (pin 10) | | | | | | | +-- DQ0 (pin 11)
| | | | | | | | | | | +---- A1 (pin 9) | | | | | | +---- DQ1 (pin 12)
| | | | | | | | | | +------ A2 (pin 8) | | | | | +------ DQ2 (pin 13)
| | | | | | | | | +-------- A3 (pin 7) | | | | +-------- DQ3 (pin 15)
| | | | | | | | +---------- A4 (pin 6) | | | +---------- DQ4 (pin 16)
| | | | | | | +------------ A5 (pin 5) | | +------------ DQ5 (pin 17)
| | | | | | +-------------- A6 (pin 4) | +-------------- DQ6 (pin 18)
| | | | | +---------------- A7 (pin 3) +---------------- DQ7 (pin 19)
| | | | +-------------------- A8 (pin 25)
| | | +---------------------- A9 (pin 24)
| | +------------------------ A10 (pin 21)
| +--------------------------- A11 (pin 23)
+------------------------------ A12 (pin 2)
NOTES:
---[STK12C68]---
- a capacitor (68uF - 220uF) must be connected between pins 1 (Vcap) and 14 (Vss/GND) to
utilise the chip's AutoStore (on device power-down) feature.
- Pin 1 and Pin 26 must not touch the IC-socket of the A5-Board!
Last modified: 10 Dec 2021
Author: M. Post
Sketch/project: 0145
*/
// address lines are controlled with 2x serial shift registers
#define DATA 2 // EEPROM pin 14 DATA (SER or DS)
#define LATCH 3 // EEPROM pin 12 LATCH (RCLK or ST_CP)
#define CLOCK 4 // EEPROM pin 11 CLOCK (SRCLK or SH_CP)
#define WRITE_ENABLE 13 // D13
#define OUTPUT_ENABLE 14 // A0 = 14 when used as Digital IO
#define CHIP_ENABLE 15 // A1 = 15 when used as Digital IO
#define CHIPTYPE 1 // 0=DS1225Y, 1=STK12C68, 2=FM16W08
#define MAX_ADDRESS 8192 // set to 8192 to write/read addresses for a full memory bank
// data lines
#define DQ0 5
#define DQ1 6
#define DQ2 7
#define DQ3 8
#define DQ4 9
#define DQ5 10
#define DQ6 11
#define DQ7 12
String command;
uint16_t addr=0; // begin reading at this address
uint8_t data_byte=0; // holds value read from eeprom
// Tektronix 2445B calibration data
const PROGMEM uint16_t data[] = {
0x3e, 0x1e, 0x3e, 0x65, 0x3f, 0x65, 0x3f, 0x65, 0x3f, 0x65, 0x89, 0x79, 0x89, 0x79, 0x8a, 0x79,
0x8a, 0x79, 0xb9, 0x1d, 0x29, 0x2d, 0x00, 0x32, 0x4a, 0x48, 0x52, 0x5a, 0x43, 0x6a, 0x1d, 0x03,
0x41, 0x15, 0xf3, 0x22, 0xf6, 0x36, 0x63, 0x43, 0x1c, 0x12, 0x74, 0x23, 0xff, 0x7f, 0x00, 0x01,
0x64, 0x01, 0x00, 0x00, 0x08, 0x01, 0xa0, 0x00, 0x50, 0x85, 0x12, 0x00, 0x00, 0xc0, 0x02, 0x1a,
0x04, 0x91, 0x20, 0x48, 0x17, 0x77, 0x21, 0x61, 0x04, 0x08, 0x00, 0x10, 0x93, 0x00, 0xff, 0x8a,
0xa8, 0xbd, 0x38, 0xdd, 0x0c, 0x1e, 0x00, 0x0c, 0x00, 0x0f, 0x0a, 0x02, 0x26, 0x78, 0x03, 0x0a,
0x00, 0x02, 0x07, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x12, 0x00, 0x9d,
0x00, 0xc0, 0xf6, 0x75, 0x62, 0x00, 0x99, 0x91, 0x28, 0x28, 0x39, 0xfa, 0xfe, 0x04, 0x77, 0x00,
0x02, 0x6b, 0x08, 0xb2, 0x03, 0x3d, 0x03, 0x31, 0x02, 0x28, 0x02, 0xdf, 0x28, 0xe6, 0xc0, 0x20,
0x00, 0xf3, 0x00, 0xab, 0x1c, 0xbe, 0x1f, 0x61, 0x1f, 0xae, 0x1f, 0x9e, 0x0d, 0x9a, 0x02, 0x66,
0x1d, 0x3f, 0x1f, 0x4e, 0x1f, 0xa7, 0x1c, 0xab, 0x0c, 0xb9, 0x02, 0xc2, 0x00, 0xe6, 0x00, 0x0d,
0x18, 0x00, 0xee, 0x16, 0xc3, 0x21, 0x1c, 0x12, 0x74, 0x23, 0xdf, 0x02, 0xb2, 0x02, 0xb9, 0x0d,
0x3f, 0x02, 0x12, 0x06, 0x29, 0x0d, 0xe6, 0x02, 0x52, 0x06, 0x00, 0x00, 0x04, 0x00, 0x35, 0xea,
0x00, 0xae, 0x27, 0x1c, 0x56, 0x11, 0x00, 0x99, 0x12, 0x00, 0x00, 0x10, 0x7a, 0x02, 0x1c, 0x00,
0x80, 0x00, 0x41, 0x05, 0x50, 0x02, 0x1c, 0x00, 0x80, 0x00, 0xf6, 0x06, 0xeb, 0xaf, 0x00, 0x00,
0x04, 0x00, 0x01, 0xff, 0x5f, 0x00, 0x75, 0x02, 0x0b, 0x0e, 0x1d, 0x03, 0xf3, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x5a, 0x00, 0x22, 0x04, 0x04, 0x84, 0x3c, 0x02,
0x8a, 0xf5, 0x00, 0x97, 0x02, 0x00, 0x02, 0x00, 0x33, 0x75, 0x02, 0x01, 0x01, 0x05, 0x01, 0x01,
0x00, 0x01, 0xff, 0xff, 0xf8, 0xff, 0x00, 0xf8, 0x20, 0x02, 0x02, 0x05, 0x05, 0x00, 0x00, 0xf7,
0x41, 0x00, 0x0b, 0x04, 0x05, 0x01, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
0x00, 0x64, 0x60, 0x00, 0x00, 0x24, 0x00, 0x00, 0x31, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe8, 0x03, 0x00, 0x00, 0xf9, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x12,
0x00, 0x00, 0x21, 0x12, 0x00, 0x00, 0x1e, 0x10, 0x00, 0x00, 0xa2, 0x70, 0x78, 0x0a, 0x00, 0x00,
0x10, 0x00, 0x09, 0x00, 0x00, 0x9d, 0xfe, 0x06, 0x01, 0xfd, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x29,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x64, 0x12, 0x25, 0x01, 0x09, 0xae, 0x07, 0x00, 0x00,
0x00, 0x00, 0x83, 0x00, 0x71, 0x06, 0x5c, 0x02, 0x60, 0x02, 0xe2, 0xff, 0x7e, 0x02, 0xfc, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x51, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x16, 0x00, 0x07, 0x00, 0xfc, 0x03, 0x02, 0x01, 0x00, 0x00, 0xff, 0x5f, 0x00, 0x00, 0x04, 0x0a,
0x00, 0x06, 0xf3, 0x01, 0x96, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x73, 0x1a, 0x8b, 0x6b, 0xad, 0x68, 0xa3, 0x55, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x01, 0x00, 0x00, 0x43, 0xf8, 0x01, 0x00, 0x07, 0x01, 0x01, 0x01, 0x1d, 0x00, 0x24, 0x00, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x42, 0xec, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x08, 0x42, 0x03,
0x6e, 0x02, 0x28, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x20,
0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x6b, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x22, 0xff, 0xf4, 0xf4, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x55, 0x55, 0x08, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
0x17, 0x7a, 0x24, 0xda, 0x35, 0x79, 0x48, 0x07, 0x5c, 0x00, 0x6b, 0xc3, 0x12, 0x27, 0x52, 0x1c,
0x74, 0xea, 0x00, 0xb8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x05, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xd2, 0xd2, 0xa5,
0xd2, 0xfe, 0xe0, 0xfe, 0x41, 0xd1, 0x9d, 0xd0, 0xfe, 0xd2, 0xa5, 0xc0, 0xfe, 0xd2, 0xd2, 0xc0,
0xd2, 0xfe, 0xd2, 0xfe, 0xe1, 0xfe, 0x41, 0xd1, 0xd0, 0x00, 0xff, 0xe3, 0x22, 0xfe, 0x41, 0xc0,
0x00, 0x64, 0xc7, 0x00, 0xc1, 0xc4, 0x07, 0xd7, 0x99, 0xe8, 0x00, 0xc4, 0x07, 0x00, 0x13, 0xe1,
0x00, 0x3d, 0x12, 0x01, 0xdf, 0xb7, 0xc2, 0x96, 0x00, 0xb3, 0x5d, 0xc8, 0xd7, 0xc1, 0xf7, 0x05,
0xc0, 0x7a, 0x01, 0x0f, 0x16, 0x01, 0x39, 0x13, 0x12, 0x01, 0xea, 0x2f, 0xc2, 0xd1, 0x00, 0x4f,
0x00, 0x04, 0x07, 0x07, 0x08, 0x3f, 0x00, 0x03, 0x07, 0x51, 0x08, 0xa7, 0x00, 0x71, 0x00, 0x1b,
0x07, 0x0c, 0x67, 0x75, 0xfc, 0x22, 0xfc, 0x02, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0x17, 0x00, 0x00, 0x36, 0x6e, 0x00, 0xff, 0x0e, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x2a, 0xff, 0x00, 0xd2, 0x00, 0xff, 0x00, 0xff, 0x00, 0x01, 0x00, 0x0a, 0x05, 0x00, 0x05, 0x46,
0xfc, 0xdc, 0x05, 0xc0, 0x04, 0xdc, 0x24, 0x14, 0x45, 0x08, 0x65, 0x08, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x62, 0x22, 0x48, 0x0f, 0x64, 0x00, 0x00, 0x2e, 0x20, 0x00, 0x2e, 0x04,
0xb0, 0x0c, 0x27, 0x04, 0xb6, 0x0c, 0x00, 0x00, 0xd2, 0x2a, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00,
0x04, 0x17, 0xf9, 0x00, 0xf9, 0xf9, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xf5, 0xf7, 0xf7, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4,
0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac,
0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00,
0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4,
0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac,
0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00,
0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4,
0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac,
0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x00, 0xbc, 0xac, 0xb8, 0xd4, 0xbc, 0xc8,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 0x00,
0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0, 0x02, 0x01, 0x80, 0x02, 0x40, 0x02, 0x60, 0x01, 0x42, 0x00,
0x00, 0x21, 0x64, 0x04, 0x00, 0x20, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0xfe, 0x06,
0x58, 0xfd, 0x6e, 0xe6, 0x00, 0x4d, 0x15, 0x00, 0x00, 0x41, 0x37, 0x00, 0x47, 0x13, 0x0e, 0xbe,
0x03, 0x92, 0x16, 0x55, 0x2b, 0xea, 0x0e, 0xfc, 0x16, 0x92, 0xff, 0x09, 0x00, 0x00, 0x2d, 0x51,
0xb3, 0x4e, 0x4d, 0x53, 0xc5, 0x55, 0xfd, 0x0f, 0x0f, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0xff, 0x55, 0x55, 0x03, 0x00, 0x00, 0x00, 0x00,
0x75, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xb8, 0x00, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x01, 0x89, 0x02,
0x40, 0x04, 0x69, 0x20, 0x62, 0x09, 0x08, 0x21, 0x64, 0x04, 0x20, 0x20, 0x08, 0x00, 0x10, 0x00,
0x00, 0x00, 0x00, 0x10, 0xfe, 0x06, 0x58, 0xfd, 0x64, 0x9c, 0x00, 0xc7, 0x15, 0x00, 0x00, 0x41,
0x37, 0x00, 0x47, 0x04, 0x0d, 0xbd, 0x12, 0x4e, 0x17, 0x64, 0x25, 0xa5, 0x0d, 0xdc, 0x12, 0x4e,
0xff, 0x64, 0x00, 0x00, 0x5e, 0x51, 0xcf, 0x4e, 0xd6, 0x4d, 0x92, 0x54, 0x00, 0x08, 0x0f, 0xff,
0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0x4e, 0xbb,
0x85, 0x01, 0x00, 0x00, 0x18, 0x00, 0x75, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 0x00, 0xbc, 0xc8, 0xc0, 0xc0,
0xc0, 0xc0, 0x03, 0x01, 0x89, 0x02, 0x40, 0x04, 0x69, 0x20, 0x62, 0x09, 0x08, 0x21, 0x64, 0x04,
0x20, 0x20, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x06, 0x58, 0xfd, 0x64, 0x9c,
0x00, 0xc7, 0x15, 0x00, 0x00, 0x41, 0x37, 0x00, 0x47, 0x04, 0x0d, 0xbd, 0x12, 0x4e, 0x17, 0x64,
0x25, 0xa5, 0x0d, 0xdc, 0x12, 0x4e, 0xff, 0x64, 0x00, 0x00, 0x5e, 0x51, 0xcf, 0x4e, 0xd6, 0x4d,
0x92, 0x54, 0x00, 0x08, 0x0f, 0xff, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x20, 0x0f,
0x0f, 0x0f, 0xfe, 0x0f, 0x4e, 0xbb, 0x85, 0x01, 0x00, 0x00, 0x18, 0x00, 0x75, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xb8, 0x00, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x01, 0x89, 0x02, 0x40, 0x04, 0x69, 0x20,
0x62, 0x09, 0x08, 0x21, 0x64, 0x04, 0x20, 0x20, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10,
0xfe, 0x06, 0x58, 0xfd, 0x64, 0x9c, 0x00, 0xc7, 0x15, 0x00, 0x00, 0x41, 0x37, 0x00, 0x47, 0x04,
0x0d, 0xbd, 0x12, 0x4e, 0x17, 0x64, 0x25, 0xa5, 0x0d, 0xdc, 0x12, 0x4e, 0xff, 0x64, 0x00, 0x00,
0x5e, 0x51, 0xcf, 0x4e, 0xd6, 0x4d, 0x92, 0x54, 0x00, 0x08, 0x0f, 0xff, 0x00, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x00, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0x4e, 0xbb, 0x85, 0x01, 0x00, 0x00,
0x18, 0x00, 0x75, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 0x00, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x01,
0x89, 0x02, 0x40, 0x04, 0x69, 0x20, 0x62, 0x09, 0x08, 0x21, 0x64, 0x04, 0x20, 0x20, 0x08, 0x00,
0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x06, 0x58, 0xfd, 0x64, 0x9c, 0x00, 0xc7, 0x15, 0x00,
0x00, 0x41, 0x37, 0x00, 0x47, 0x04, 0x0d, 0xbd, 0x12, 0x4e, 0x17, 0x64, 0x25, 0xa5, 0x0d, 0xdc,
0x12, 0x4e, 0xff, 0x64, 0x00, 0x00, 0x5e, 0x51, 0xcf, 0x4e, 0xd6, 0x4d, 0x92, 0x54, 0x00, 0x08,
0x0f, 0xff, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f,
0x4e, 0xbb, 0x85, 0x01, 0x00, 0x00, 0x18, 0x00, 0x75, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb8, 0x00, 0xbc, 0xc8,
0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x01, 0x89, 0x02, 0x40, 0x04, 0x69, 0x20, 0x62, 0x09, 0x08, 0x21,
0x64, 0x04, 0x20, 0x20, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0x06, 0x58, 0xfd,
0x64, 0x9c, 0x00, 0xc7, 0x15, 0x00, 0x00, 0x41, 0x37, 0x00, 0x47, 0x04, 0x0d, 0xbd, 0x12, 0x4e,
0x17, 0x64, 0x25, 0xa5, 0x0d, 0xdc, 0x12, 0x4e, 0xff, 0x64, 0x00, 0x00, 0x5e, 0x51, 0xcf, 0x4e,
0xd6, 0x4d, 0x92, 0x54, 0x00, 0x08, 0x0f, 0xff, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00,
0x20, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0x4e, 0xbb, 0x85, 0x01, 0x00, 0x00, 0x18, 0x00, 0x75, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xb8, 0x00, 0xbc, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x01, 0x89, 0x02, 0x40, 0x04,
0x69, 0x20, 0x62, 0x09, 0x08, 0x21, 0x64, 0x04, 0x20, 0x20, 0x08, 0x00, 0x10, 0x00, 0xff, 0x00,
0x00, 0xfc, 0xfe, 0x06, 0x58, 0xfd, 0x64, 0x9c, 0x00, 0xc7, 0x15, 0x00, 0x00, 0x41, 0x37, 0x00,
0x47, 0x04, 0x0d, 0xbd, 0x12, 0x4e, 0x17, 0x64, 0x25, 0xa5, 0x0d, 0xdc, 0x12, 0x4e, 0xff, 0x64,
0x00, 0x00, 0x5e, 0x51, 0xcf, 0x4e, 0xd6, 0x4d, 0x92, 0x54, 0x00, 0x08, 0x0f, 0xff, 0x00, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0x4e, 0xbb, 0x85, 0x01,
0x00, 0x00, 0x18, 0x00, 0x75, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, 0x00, 0xb8, 0xc8, 0xc0, 0xc0, 0xc0, 0xc0,
0x01, 0x01, 0x00, 0x03, 0x41, 0x02, 0x6a, 0x20, 0x11, 0x0a, 0x00, 0x21, 0x64, 0x04, 0x00, 0x08,
0x08, 0x00, 0x10, 0x00, 0xff, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x57, 0xfd, 0x69, 0xef, 0x00, 0xbd,
0x14, 0x00, 0x00, 0xa7, 0x37, 0x00, 0x47, 0x13, 0x0a, 0xbd, 0x00, 0x34, 0x24, 0x00, 0x2c, 0x99,
0x0a, 0x75, 0x20, 0x34, 0xff, 0x44, 0x00, 0x00, 0x2e, 0x50, 0xc1, 0x47, 0xc4, 0x4d, 0x4b, 0x54,
0x00, 0x08, 0x0f, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0xfe, 0x0f, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x40, 0x0a, 0x4f, 0x20, 0x22, 0x0f,
0x00, 0x22, 0x64, 0x14, 0x20, 0x28, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x06,
0x58, 0xfd, 0x6f, 0x00, 0x00, 0xff, 0x17, 0x00, 0x00, 0xff, 0x36, 0x00, 0x43, 0xed, 0x21, 0x9f,
0x00, 0xfb, 0x26, 0x00, 0x27, 0x26, 0x12, 0x94, 0x2f, 0xf1, 0xff, 0x3c, 0x00, 0x00, 0xfe, 0x47,
0xfc, 0x4f, 0xff, 0x57, 0x01, 0x5c, 0x00, 0x08, 0x0f, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xfe, 0x0f, 0x4c, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x75, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0x1e, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0x03, 0x00, 0x23, 0x2b, 0x21, 0x06, 0x23, 0xfb, 0x02, 0x12, 0x99, 0x0f, 0x07, 0x8b, 0x0b, 0x2c,
0x14, 0x7a, 0x00, 0x01, 0x75, 0x03, 0x08, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x4e, 0x65,
0xff, 0x00, 0xff, 0x00, 0x05, 0x00, 0xff, 0x00, 0xff, 0x00, 0xa0, 0x00, 0x4c, 0x1d, 0x4e, 0x50,
0x0c, 0x54, 0xe7, 0x00, 0x5c, 0xea, 0x0c, 0xc3, 0x0b, 0xe4, 0x68, 0x54, 0x6a, 0x00, 0x98, 0x76,
0xff, 0x00, 0xed, 0x41, 0x7f, 0x00, 0x00, 0x00, 0xc3, 0x5c, 0x27, 0x6b, 0xc3, 0x5c, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6f, 0x01, 0x00, 0x48,
0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0x02, 0x00, 0x00, 0x62, 0x00, 0x2c, 0x00, 0x02, 0x00, 0x04, 0x1d, 0x02, 0xff, 0x4c,
0xeb, 0xff, 0x10, 0x36, 0x0a, 0x68, 0x0a, 0x82, 0x00, 0x77, 0x02, 0xff, 0x00, 0x68, 0x02, 0xff,
0xff, 0x60, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0f, 0x00, 0xff, 0x00,
0x00, 0xff, 0x01, 0x00, 0x00, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff,
0xff, 0x00, 0x00, 0x02, 0x02, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0xff,
0x69, 0x00, 0xfb, 0x07, 0x01, 0xff, 0x01, 0xff, 0x05, 0xff, 0x01, 0xff, 0xfd, 0x0c, 0xfe, 0xbf,
0x02, 0xca, 0x00, 0xe6, 0x00, 0xff, 0x00, 0x00, 0x45, 0x03, 0x99, 0x00, 0x00, 0x48, 0x05, 0x04,
0x03, 0x15, 0x00, 0x45, 0x00, 0x00, 0xff, 0x07, 0x4b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0x45, 0x03, 0x31, 0x08, 0x30, 0x08, 0x00, 0xff, 0x00, 0xff, 0x00, 0x01, 0x01, 0x02,
0xd4, 0x01, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0x95, 0x00, 0x01, 0xb6, 0x00, 0x01, 0x00, 0x00,
0x02, 0x01, 0x09, 0x08, 0x99, 0x00, 0x99, 0x33, 0x99, 0xc8, 0x98, 0x32, 0x98, 0x9c, 0x97, 0x06,
0x96, 0x70, 0x96, 0xda, 0x95, 0x44, 0x95, 0xae, 0x94, 0x18, 0x93, 0x82, 0x93, 0xec, 0x92, 0x56,
0x92, 0xc0, 0x91, 0x2a, 0x90, 0x94, 0x90, 0xfe, 0x8f, 0x68, 0x8f, 0xd2, 0x8e, 0x3c, 0x8e, 0xa6,
0x8d, 0x10, 0x8c, 0x7a, 0x8c, 0xe4, 0x8b, 0x4e, 0x8b, 0xb8, 0x8a, 0x22, 0x89, 0x8c, 0x89, 0xf6,
0x88, 0x60, 0x00, 0xca, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1d, 0x01,
0x00, 0x79, 0x99, 0x00, 0x01, 0x32, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x9c, 0x00, 0x1a, 0xd6, 0xff, 0x22,
0xff, 0x00, 0x53, 0x08, 0x00, 0x00, 0x00, 0x00, 0x66, 0x48, 0x04, 0x9d, 0xea, 0x9c, 0x00, 0x14,
0xff, 0x80, 0x80, 0x00, 0xff, 0x00, 0x35, 0x0c, 0x45, 0x08, 0x65, 0x08, 0xcc, 0x0f, 0xcc, 0x1f,
0x26, 0x00, 0xe6, 0x0f, 0x03, 0x6c, 0x08, 0xff, 0x08, 0x3a, 0x00, 0x64, 0x00, 0x00, 0x00, 0x08,
0x14, 0x00, 0x22, 0x22, 0xff, 0xff, 0x00, 0xff, 0x48, 0x00, 0x08, 0x02, 0xff, 0x00, 0xff, 0xff,
0x00, 0x00, 0x04, 0x48, 0x00, 0x80, 0x45, 0x08, 0x65, 0x08, 0x00, 0x00, 0x00, 0xff, 0x00, 0x20,
0xff, 0x00, 0x3c, 0x01, 0xff, 0xff, 0xff, 0x7b, 0x00, 0x84, 0xff, 0x45, 0x00, 0xe8, 0xff, 0x00,
0xf0, 0x1e, 0x21, 0x00, 0x94, 0xaf, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x1d, 0x01, 0xe8, 0x01, 0xba, 0x00, 0xcf,
0x0c, 0x40, 0x7e, 0xfe, 0x41, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x41, 0x00, 0xb8, 0x00, 0xff,
0x00, 0x00, 0x03, 0x90, 0x0d, 0x05, 0x0d, 0xe6, 0x0d, 0xe8, 0x0d, 0xef, 0x0d, 0xee, 0x0d, 0xe8,
0x0d, 0xee, 0x0d, 0xed, 0x0d, 0xe2, 0x0d, 0xbe, 0x0d, 0xbd, 0x0d, 0xb7, 0x0d, 0xbd, 0x0d, 0xbd,
0x0e, 0xb1, 0x0e, 0x57, 0x0e, 0x56, 0x0e, 0x50, 0x0e, 0x57, 0x0e, 0x56, 0x0e, 0x4a, 0x0d, 0x51,
0x0d, 0xb2, 0x0d, 0xab, 0x0d, 0xb7, 0x0d, 0xb7, 0x0d, 0x4d, 0x0d, 0x4d, 0x0d, 0x4d, 0x0d, 0x4d,
0x0d, 0x4f, 0x0d, 0x53, 0x0d, 0x52, 0x0d, 0x4b, 0x0d, 0x4f, 0x0d, 0x4e, 0x0d, 0x4a, 0x0d, 0x4e,
0x0d, 0x90, 0x0d, 0x92, 0x0d, 0x96, 0x0d, 0x94, 0x0d, 0x8d, 0x0d, 0x91, 0x0d, 0x90, 0x0d, 0x8c,
0x0d, 0x90, 0x0d, 0x2a, 0x0d, 0x27, 0x0d, 0x2b, 0x0d, 0x29, 0x0d, 0xbd, 0x00, 0x90, 0x0d, 0x14,
0x00, 0x90, 0x9d, 0x3e, 0x9d, 0xc7, 0xff, 0x95, 0x00, 0x82, 0x00, 0x42, 0x00, 0xff, 0x00, 0xff,
0xae, 0xfd, 0x30, 0xfe, 0xff, 0x4c, 0x01, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00,
0x02, 0xff, 0x12, 0xff, 0x05, 0x1c, 0x05, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
0x00, 0xb3, 0x04, 0xdb, 0x24, 0xd3, 0x04, 0xbd, 0x24, 0xad, 0x04, 0x96, 0x04, 0xcf, 0x24, 0xd0,
0x04, 0xb7, 0x04, 0xb1, 0x04, 0xb7, 0x22, 0x37, 0x22, 0x34, 0x02, 0x36, 0x02, 0x35, 0x02, 0x50,
0x02, 0x36, 0x02, 0x30, 0x22, 0x31, 0x02, 0x30, 0x02, 0x44, 0x20, 0x72, 0x20, 0x1e, 0x20, 0x1d,
0x20, 0x1e, 0x00, 0x1c, 0x3b, 0xa6, 0x1d, 0x40, 0x1d, 0x0e, 0x3c, 0xc7, 0x1f, 0xc0, 0x3f, 0xc1,
0x1f, 0xbe, 0x3f, 0xa7, 0x1f, 0xb4, 0x02, 0x35, 0x02, 0x3c, 0x02, 0x30, 0x22, 0x2f, 0x1c, 0xf5,
0x3d, 0xc9, 0x3e, 0x5f, 0x10, 0x00, 0x3f, 0xad, 0x1f, 0xa9, 0x3f, 0xab, 0x1f, 0xa3, 0x1f, 0xaf,
0x02, 0xe1, 0x02, 0xe1, 0x02, 0xdd, 0x22, 0xdc, 0x27, 0x9e, 0x28, 0x49, 0x28, 0x4a, 0x08, 0x6f,
0x08, 0x55, 0x08, 0x77, 0x08, 0x59, 0x00, 0x5d, 0x28, 0x49, 0x08, 0x48, 0x28, 0x70, 0x28, 0x57,
0x28, 0x75, 0x08, 0x56, 0x00, 0x5e, 0x23, 0x47, 0x23, 0x33, 0x03, 0x34, 0x26, 0x5c, 0x06, 0x4f,
0x26, 0x66, 0x26, 0x59, 0x22, 0xdc, 0x22, 0xe0, 0x18, 0x3e, 0x2e, 0x9d, 0x0e, 0x99, 0x26, 0xf6,
0x26, 0xde, 0x02, 0x72, 0x02, 0x7b, 0x01, 0x44, 0x21, 0x49, 0x27, 0xe5, 0x27, 0xfb, 0x25, 0x17,
0x04, 0x53, 0x06, 0x16, 0x27, 0x49, 0x26, 0x0a, 0x05, 0x2c, 0x06, 0x43, 0x05, 0x7f, 0x07, 0x42,
0x07, 0x72, 0x06, 0xd5, 0x04, 0x4d, 0x04, 0x56, 0x04, 0x1e, 0x05, 0x75, 0x27, 0x16, 0x26, 0xfa,
0x25, 0xd4, 0x25, 0xdd, 0x25, 0xa5, 0x22, 0xd9, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xab, 0x08, 0x14,
0x08, 0x28, 0x00, 0x07, 0x1f, 0xb7, 0x3c, 0xb9, 0x1c, 0xcf, 0x00, 0xc7, 0x00, 0xfd, 0x00, 0xd7,
0x00, 0xff, 0x00, 0x6f, 0xd2, 0xff, 0xfa, 0xe0, 0x01, 0xff, 0xff, 0x8b, 0x04, 0xff, 0xff, 0x5c,
0x11, 0xfe, 0xfd, 0xa9, 0xa2, 0x77, 0xff, 0x99, 0x9c, 0xef, 0xff, 0x23, 0x60, 0xfd, 0xfd, 0x00,
0x20, 0xf1, 0xfd, 0xe0, 0x01, 0x7f, 0xff, 0x14, 0x00, 0xff, 0xff, 0x13, 0x4b, 0xf7, 0xff, 0x77,
0x8f, 0xff, 0xff, 0x48, 0x22, 0xff, 0xbf, 0xcf, 0x21, 0xff, 0xff, 0xc8, 0x91, 0xdf, 0xfd, 0x34,
0xfd, 0xef, 0xfd, 0x83, 0x14, 0xef, 0xff, 0x03, 0x09, 0xfd, 0x7e, 0x0e, 0xc3, 0xfe, 0xf7, 0x00,
0x12, 0xef, 0x5b, 0x70, 0x04, 0xe0, 0xff, 0xdc, 0xb0, 0x6f, 0x6f, 0x14, 0x8a, 0x7f, 0xef, 0x57,
0xc3, 0xf1, 0x7f, 0x00, 0x06, 0xfb, 0x2c, 0x50, 0x2d, 0xa8, 0x0d, 0xd4, 0x2d, 0xd0, 0x0d, 0xd8,
0x0d, 0xd8, 0x2d, 0xc4, 0x0d, 0xb4, 0x2d, 0xb0, 0x0d, 0xb4, 0x2d, 0xc8, 0x2d, 0xdc, 0x0d, 0xb8,
0x2d, 0xa4, 0x0d, 0xa0, 0x10, 0x0a, 0x10, 0x0a, 0x10, 0x0a, 0x10, 0x0a, 0x10, 0x0a, 0x31, 0xe8,
0x0d, 0x24, 0x2b, 0xc4, 0x2a, 0xfa, 0x2a, 0x7e, 0x2a, 0x4e, 0x0a, 0x34, 0x0a, 0x20, 0x0a, 0x1a,
0x0a, 0x1c, 0x2a, 0x22, 0x0a, 0x26, 0x2a, 0x24, 0x0a, 0x20, 0x2a, 0x24, 0x0b, 0xb8, 0x0b, 0xb8,
0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x2e, 0xba, 0x2e, 0xba, 0x2e, 0xba, 0x2e, 0xba, 0x2e, 0xb6,
0x2e, 0x9e, 0x2e, 0x92, 0x0e, 0x66, 0x0d, 0xde, 0x0c, 0xf2, 0x0c, 0xf2, 0x28, 0x4a, 0x0b, 0x74,
0x3f, 0xfb, 0x1c, 0xcf, 0x1c, 0xd4, 0x1c, 0xda, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0,
0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07,
0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4,
0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0xa0, 0x07, 0xe4, 0x00, 0x00, 0x00, 0x00
};
void setup() {
pinMode(DATA,OUTPUT);
pinMode(LATCH,OUTPUT); // LOW=don't update outputs
pinMode(CLOCK,OUTPUT);
digitalWrite(OUTPUT_ENABLE,HIGH); // not outputting
pinMode(OUTPUT_ENABLE,OUTPUT);
digitalWrite(CHIP_ENABLE,HIGH); // chip disabled
pinMode(CHIP_ENABLE,OUTPUT);
digitalWrite(WRITE_ENABLE,HIGH); // not writing
pinMode(WRITE_ENABLE,OUTPUT);
Serial.begin(9600);
show_options();
}
void show_options()
{
Serial.println("DS1225Y/STK12C68/FM16W08 EEPROM Programmer (Project 0145)");
Serial.println("");
Serial.println("Available commands:");
Serial.println(" read (read from EEPROM)");
Serial.println(" write (write data to EEPROM");
Serial.println(" verify (verify EEPROM with const data");
Serial.println(" wipe (write zeroes to EEPROM");
Serial.println("");
Serial.println("");
}
void datalines_output()
{
pinMode(DQ0,OUTPUT);
pinMode(DQ1,OUTPUT);
pinMode(DQ2,OUTPUT);
pinMode(DQ3,OUTPUT);
pinMode(DQ4,OUTPUT);
pinMode(DQ5,OUTPUT);
pinMode(DQ6,OUTPUT);
pinMode(DQ7,OUTPUT);
}
void datalines_input()
{
pinMode(DQ0,INPUT);
pinMode(DQ1,INPUT);
pinMode(DQ2,INPUT);
pinMode(DQ3,INPUT);
pinMode(DQ4,INPUT);
pinMode(DQ5,INPUT);
pinMode(DQ6,INPUT);
pinMode(DQ7,INPUT);
}
void set_address(uint16_t address)
{
// write the 16-bit EEPROM address to the two serial shift registers
digitalWrite(LATCH,LOW);
shiftOut(DATA, CLOCK, MSBFIRST, highByte(address));
shiftOut(DATA, CLOCK, MSBFIRST, lowByte(address));
digitalWrite(LATCH,HIGH);
}
void read_eeprom(int verify)
{
// --- READ ---
Serial.print("READ ");
if (verify == 1)
{
Serial.print("(+Verify) ");
}
Serial.print("from EEPROM:");
Serial.println("");
int mismatch = 0;
addr=0; // begin reading at this address
datalines_input();
digitalWrite(WRITE_ENABLE, HIGH); // keep WE high during the entire read cycle
digitalWrite(CHIP_ENABLE, LOW); // keep CE low during the entire read cycle (ok for SRAM)
while (addr < MAX_ADDRESS)
{
// begin read EEPROM sequence
digitalWrite(OUTPUT_ENABLE, HIGH);
delayMicroseconds(1);
// write the 16-bit EEPROM address to the two serial shift registers
set_address(addr);
if (CHIPTYPE == 2)
{
// FRAM requires toggling of CE
delayMicroseconds(1);
digitalWrite(CHIP_ENABLE, HIGH);
delayMicroseconds(1);
digitalWrite(CHIP_ENABLE, LOW);
delayMicroseconds(1);
}
digitalWrite(OUTPUT_ENABLE, LOW);
// CE and OE must be LOW
// WE and HSB are HIGH
// read data bits from digital inputs
data_byte=0;
data_byte |= (digitalRead(DQ7) << 7);
data_byte |= (digitalRead(DQ6) << 6);
data_byte |= (digitalRead(DQ5) << 5);
data_byte |= (digitalRead(DQ4) << 4);
data_byte |= (digitalRead(DQ3) << 3);
data_byte |= (digitalRead(DQ2) << 2);
data_byte |= (digitalRead(DQ1) << 1);
data_byte |= digitalRead(DQ0);
digitalWrite(OUTPUT_ENABLE, HIGH);
delayMicroseconds(1);
digitalWrite(OUTPUT_ENABLE, LOW);
Serial.print("Addr: ");
Serial.print(addr);
Serial.print(" 0x");
Serial.print(addr,HEX);
Serial.print(" ");
Serial.print(data_byte,HEX);
if (verify == 1)
{
// get corresponding data byte that we expect to see at this address
int data_byte_exp = pgm_read_byte_near(data + addr);
if (data_byte < 16)
{
Serial.print(" ");
}
if (data_byte == data_byte_exp)
{
Serial.print(" Ok");
} else {
Serial.print(" MISMATCH -- expected ");
Serial.print(data_byte_exp,HEX);
mismatch++;
}
}
Serial.println();
addr++;
}
Serial.println("");
Serial.print("READ finished, ");
Serial.print(addr);
Serial.println(" Bytes");
Serial.println("");
if (verify == 1)
{
if (mismatch == 0)
{
Serial.println("Verification 100% successful");
Serial.println("");
} else {
Serial.print(mismatch);
Serial.println(" Bytes failed verification.");
Serial.println("");
}
}
}
void write_eeprom(int bank)
{
// --- WRITE ---
Serial.println("WRITE to EEPROM:");
Serial.println("--");
addr=0; // begin writing at this address
while (addr < MAX_ADDRESS)
{
// fetch firmware data byte from progmem
if (bank == 0)
data_byte = 0; // wipe with zeroes
if (bank == 1)
data_byte = pgm_read_byte_near(data + addr); // write firmware data
// write byte to EEPROM
digitalWrite(OUTPUT_ENABLE,HIGH);
delayMicroseconds(1000);
digitalWrite(WRITE_ENABLE, HIGH);
delayMicroseconds(1000);
// write the 16-bit EEPROM address to the two serial shift registers
set_address(addr);
delayMicroseconds(1000);
datalines_output();
delayMicroseconds(1000);
// write data_byte to digital IO pins
digitalWrite(DQ0, data_byte & 1); // write bit 0 of data_byte to DQ0
digitalWrite(DQ1, data_byte & 2); // write bit 1 of data_byte to DQ1
digitalWrite(DQ2, data_byte & 4); // write bit 2 of data_byte to DQ2
digitalWrite(DQ3, data_byte & 8); // write bit 3 of data_byte to DQ3
digitalWrite(DQ4, data_byte & 16); // write bit 4 of data_byte to DQ4
digitalWrite(DQ5, data_byte & 32); // write bit 5 of data_byte to DQ5
digitalWrite(DQ6, data_byte & 64); // write bit 6 of data_byte to DQ6
digitalWrite(DQ7, data_byte & 128); // write bit 7 of data_byte to DQ7
// check if what we write is correct
delayMicroseconds(1000);
if (CHIPTYPE == 2)
{
// FRAM requires toggling of CE
delayMicroseconds(1000);
digitalWrite(CHIP_ENABLE, HIGH);
delayMicroseconds(1000);
digitalWrite(CHIP_ENABLE, LOW);
delayMicroseconds(1000);
} else {
// not toggle required for SRAM
digitalWrite(CHIP_ENABLE, LOW);
delayMicroseconds(1000);
}
digitalWrite(WRITE_ENABLE,LOW);
delayMicroseconds(1000);
digitalWrite(WRITE_ENABLE, HIGH);
delayMicroseconds(1000);
// CE and WE are LOW
// HSB is high (use pullup?)
datalines_input();
digitalWrite(OUTPUT_ENABLE,LOW);
delayMicroseconds(1000);
digitalWrite(OUTPUT_ENABLE,HIGH);
delayMicroseconds(1000);
digitalWrite(CHIP_ENABLE, HIGH);
Serial.print("Addr: ");
Serial.print(addr);
Serial.print(" 0x");
Serial.print(addr,HEX);
Serial.print(" ");
Serial.println(data_byte,HEX);
addr++;
}
Serial.println("");
Serial.print("WRITE finished, ");
Serial.print(addr);
Serial.println(" Bytes");
Serial.println("");
}
void loop() {
uint16_t addr=0;
uint8_t data_byte=0;
uint8_t do_write=0;
uint8_t do_read=1;
while(true)
{
if(Serial.available())
{
command = Serial.readStringUntil('\n');
if(command.equals("read"))
{
read_eeprom(0);
}
else if(command.equals("write"))
{
write_eeprom(1);
}
else if(command.equals("wipe"))
{
write_eeprom(0);
}
else if(command.equals("verify"))
{
read_eeprom(1);
}
else{
Serial.println("Invalid command");
}
show_options();
}
}
}
<pre>
24b6293aaaa07455ce2f0481fc5f5985b5077eee
Wemos D1 Mini
0
862
3568
2021-12-20T01:22:08Z
Admin
1
Created page with "How to program the Wemos D1 Mini"
wikitext
text/x-wiki
How to program the Wemos D1 Mini
4b466d8fb270f52ff3d4cd15481ac92851646721
3569
3568
2021-12-20T01:24:42Z
Admin
1
wikitext
text/x-wiki
How to load Tasmota on the Wemos D1 Mini
- install and run Arduino 1.8.9
- install esp8266 libraries
'Tools - Manage Libraries' - type: 'esp8266' and select the library from MicroGear (chavee)
- install esp8266 boards
'File - Preferences - Additional board manager URLs'
add: https://arduino.esp8266.com/stable/package_esp8266com_index.json
Then install the boards:
'Tools - Board - Board Manager' - Type: 'esp8266' and install the 'esp8266 by ESP8266 Community'
- load board for 'LOLIN (WEMOS) D1 R2 & mini'
You can now write sketches to the device. Check the 'Examples' section to get started.
Writing an MQTT client to the Wemos D1 Mini using Arduino
(This is different to the Tasmota environment which is a fully integrated client platform
and has relatively little customisation possibilities)
DEPRECATED!!
Writing the Tasmota client firmware to a Wemos D1 Mini
DEPRECATED!!
- download and set up Tasmota libraries and sketches (Sonoff-Tasmota-6.6.0) (where?)
- compile and flash to USB attached Wemos D1 Mini
- update my_user_config.h for local wifi connection settings
- check local dhcp server for ip address
- browse to ip
upgrade over the air to newer versions is now possible
NOTE: newer versions of Tasmota were harder and harder to compile
on Arduino. As a result, they have now made available an
entirely different development IDE (something 'IO'). If you
can compile and write Tasmota to an ESP8266 through Arduino
then good for you, but you won't find much support if it
doesn't work anymore.
DEPRECATED!!
DO THIS:
Writing the Tasmota client firmware to a Wemos D1 Mini
-> download the tasmota.bin binary firmware from github and
flash it directly to the board with the esptool.py
5531f08c218869e6c26c088debc4f84cf7e81e93
3570
3569
2021-12-20T01:30:49Z
Admin
1
wikitext
text/x-wiki
How to load Tasmota on the Wemos D1 Mini
If you're insterested in just putting Tasmota on a Wemos D1 mini, use esptool.py and upload tasmota.bin straight onto it
Do NOT use the debian apt version of esptool, but grab it from github or pip
apt-get install pip (or python3-pip)
pip install esptool (or pip3 install esptool)
apt-get install git
git clone https://github.com/espressif/esptool.git
to upgrade pip: pip install --upgrade pip
esptool.py --port /dev/ttyUSB0 write_flash -fm dout 0x0 tasmota_8.1.0.bin
after uploading the firmware the Wemos D1 mini will broadcast a WLAN captive portal. Set the SSID and password, reboot and
connect to the 'tasmota-2323' (or whatever number you saw) website (http://tasmota-2323/)
If your device doesn't show up in your router's DHCP table, it may still be in
'captive portal' mode and it will advertise its own WLAN. Connect to that and it will
take you straight to the internal running tasmota web server. Configure your wifi
credentials and reboot. Then set up your mqtt settings.
d198e74aafddbefb84bfb21439462160730ce744
3571
3570
2021-12-20T01:51:17Z
Admin
1
wikitext
text/x-wiki
How to load Tasmota on the Wemos D1 Mini
If you're insterested in just putting Tasmota on a Wemos D1 mini, use esptool.py and upload tasmota.bin straight onto it
Do NOT use the debian apt version of esptool, but grab it from github or pip
apt-get install pip (or python3-pip)
pip install esptool (or pip3 install esptool)
apt-get install git
git clone https://github.com/espressif/esptool.git
to upgrade pip: pip install --upgrade pip
Grab the latest Tasmota.bin from the developer's website: https://tasmota.github.io/docs/Download/
Then just connect the board to the computer with a USB cable (no need to do anything with reset buttons or jumper leads etc..)
Command to flash tasmota onto the esp8266:
esptool.py --port /dev/ttyUSB0 write_flash -fm dout 0x0 tasmota_8.1.0.bin
After uploading the firmware the Wemos D1 mini will broadcast a WLAN captive portal. Set the SSID and password, reboot and
connect to the 'tasmota-2323' (or whatever number you saw) website (http://tasmota-2323/)
If your device doesn't show up in your router's DHCP table, it may still be in
'captive portal' mode and it will advertise its own WLAN. Connect to that and it will
take you straight to the internal running tasmota web server. Configure your wifi
credentials and reboot. Then set up your mqtt settings.
7407a6ede2ccdb5432272411c4c624d78f475027
3572
3571
2021-12-20T01:55:07Z
Admin
1
wikitext
text/x-wiki
How to load Tasmota on the Wemos D1 Mini
If you're insterested in just putting Tasmota on a Wemos D1 mini, use esptool.py and upload tasmota.bin straight onto it
Do NOT use the debian apt version of esptool, but grab it from github or pip
apt-get install pip (or python3-pip)
pip install esptool (or pip3 install esptool)
apt-get install git
git clone https://github.com/espressif/esptool.git
to upgrade pip: pip install --upgrade pip
Grab the latest Tasmota.bin from the developer's website: https://tasmota.github.io/docs/Download/
Then just connect the board to the computer with a USB cable (no need to do anything with reset buttons or jumper leads etc..)
Command to flash tasmota onto the esp8266:
esptool.py --port /dev/ttyUSB0 write_flash -fs 1M -fm dout 0x0 tasmota_8.1.0.bin
After uploading the firmware the Wemos D1 mini, simply unplug the USB and re-insert it. After about 10 seconds, the Wemos D1 mini will broadcast a WLAN captive portal. Click on the SSID to connect to it and open a browser to navigate to the tasmota page (it will load automatically). Once tasmota is loaded in the browser set the local WiFi credentials you wish to connect to and let it reboot.
If your device doesn't show up in your router's DHCP table, it may still be in
'captive portal' mode and it will advertise its own WLAN. Connect to that and it will
take you straight to the internal running tasmota web server. Configure your wifi
credentials and reboot. Then set up your mqtt settings.
c3bdc3479b53e7b28eca8f7101120bc4cbb2802d
ATtiny85 DS18B20
0
863
3574
2021-12-26T03:03:39Z
Admin
1
Created page with " <pre> /* DS18B20 code for ATMega328 (arduino) This code does not rely on any external OneWire or DallasTemperature sensor libraries. DS18B20 temperature sensor ------------------------- DS18S20 byte 1 byte 2 ------------------------------- 76543210 76543210 00101010 00000000 IIIIDDDD SSSSSIII 3210..."
wikitext
text/x-wiki
<pre>
/*
DS18B20 code for ATMega328 (arduino)
This code does not rely on any external OneWire or DallasTemperature sensor libraries.
DS18B20 temperature sensor
-------------------------
DS18S20
byte 1 byte 2
-------------------------------
76543210 76543210
00101010 00000000
IIIIDDDD SSSSSIII
3210 654
I = Celsius integer digits (signed) 000 0010 = 2
D = Number of decimal steps (x multiplier) 1010 = 10 steps x 0.0625
S = Signedness (0=positive, 1=negative) 00000 = +
DS1820
LSB (1st 7 bits are the temperature)
and the last bit represents .0 or .5 degrees
Example: '87654321'
TTTTTTTH
T = Temperature
H = halves H=0 (.0), H=1 (.5)
MSB (is 0 when positive, 1 when negative)
*/
//#include <avr/io.h>
//#include <util/delay.h>
//#include <string.h>
//#include <math.h>
#define THERM_PORT PORTB
#define THERM_DDR DDRB
#define THERM_PIN PINB
#define THERM_DQ PB2 // Define DS1820 DQ pin
#define THERM_INPUT_MODE() THERM_DDR&=~(1<<THERM_DQ)
#define THERM_OUTPUT_MODE() THERM_DDR|=(1<<THERM_DQ)
#define THERM_LOW() THERM_PORT&=~(1<<THERM_DQ)
#define THERM_HIGH() THERM_PORT|=(1<<THERM_DQ)
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
#define THERM_CMD_CONVERTTEMP 0x44
#define THERM_CMD_RSCRATCHPAD 0xbe
#define THERM_CMD_WSCRATCHPAD 0x4e
#define THERM_CMD_CPYSCRATCHPAD 0x48
#define THERM_CMD_RECEEPROM 0xb8
#define THERM_CMD_RPWRSUPPLY 0xb4
#define THERM_CMD_SEARCHROM 0xf0
#define THERM_CMD_READROM 0x33
#define THERM_CMD_MATCHROM 0x55
#define THERM_CMD_SKIPROM 0xcc
#define THERM_CMD_ALARMSEARCH 0xec
#define THERM_DECIMAL_STEPS_12BIT 625 // 0.0625, for 12-bit accuracy
#define PRESENCE_ERR 0xFF
#define DATA_ERR 0xFF
#define LAST_DEVICE 0x00
#define SEARCH_FIRST 0xFF
#define CLEAR(s) memset(&(s), 0, sizeof(s)) // to clear an array
int got_ack;
uint8_t romcodes[20][9]; // store romcode of 20 sensors max
uint8_t scratchpad[9]; // stores a scratchpad
char buffer[16];
void setup()
{
Serial.begin(9600);
}
void pMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin));
} else {
(DDRB &= ~(1 << pin));
}
}
void dWrite(int pin, int state)
{
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
int dRead(int pin)
{
if (bit_is_set(PINB,pin))
{
return 1;
} else {
return 0;
}
}
// -- OneWire functions --
uint8_t owReset(int Pin)
{
uint8_t i;
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
dWrite(Pin, LOW);
pMode(Pin, OUTPUT); // bring low for 480us
_delay_us(480);
// Release line and wait for 60us
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
_delay_us(60);
// store line value and wait for completion of 480us period
i=dRead(Pin);
_delay_us(480);
// return measured line value
return i;
}
uint8_t therm_reset()
{
uint8_t i;
// pull line low and wait for 480us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(480);
_delay_us(480);
// Release line and wait for 60us
THERM_INPUT_MODE();
//therm_delay(60);
_delay_us(60);
// store line value and wait for completion of 480us period
i=(THERM_PIN & (1<<THERM_DQ));
//therm_delay(420);
_delay_us(480);
// return measured line value
return i;
}
void therm_write_bit(uint8_t bit)
{
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// if we want to write 1, release the line (if not will keep low)
if (bit) THERM_INPUT_MODE();
// wait for 60us and release the line
//therm_delay(60);
_delay_us(60);
THERM_INPUT_MODE();
}
uint8_t therm_read_bit(void)
{
uint8_t bit=0;
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// release line and wait for 14us
THERM_INPUT_MODE();
//therm_delay(14);
_delay_us(14);
// read line value
if (THERM_PIN&(1<<THERM_DQ)) bit=1;
// wait for 45us to end and return read value
//therm_delay(45);
_delay_us(45);
return bit;
}
uint8_t therm_read_byte(void)
{
uint8_t i=8, n=0;
while(i--)
{
// shift one position right and store read value
n>>=1;
n|=(therm_read_bit()<<7);
}
return n;
}
void therm_write_byte(uint8_t byte)
{
uint8_t i=8;
while(i--)
{
// write actual bit and shift one position right to make the next bit ready
therm_write_bit(byte&1);
byte>>=1;
}
}
unsigned char therm_rom_search(unsigned char diff, unsigned char *id)
{
// scans a one-wire bus for all attached DS18x20 sensors
unsigned char i, j, next_diff;
unsigned char b;
if( therm_reset() )
return PRESENCE_ERR; // error, no device found
therm_write_byte( THERM_CMD_SEARCHROM ); // ROM search command
next_diff = LAST_DEVICE; // unchanged on last device
i = 8 * 8; // 8 bytes
do
{
j = 8; // 8 bits
do
{
b = therm_read_bit(); // read bit
// read complement bit
if( therm_read_bit() )
{
if( b ) // 11
return DATA_ERR; // data error
} else {
if( !b )
{
// 00 = 2 devices
if( diff > i || ((*id & 1) && diff != i) )
{
b = 1; // now 1
next_diff = i; // next pass 0
}
}
}
therm_write_bit( b ); // write bit
*id >>= 1;
if( b ) // store bit
*id |= 0x80;
i--;
} while( --j );
id++; // next byte
} while( i );
return next_diff; // to continue search
}
void start_meas( void )
{
if( PINB & 1<< THERM_DQ )
{
therm_write_byte(THERM_CMD_CONVERTTEMP); // read scratchpad
PORTB |= 1<< THERM_DQ;
DDRB |= 1<< THERM_DQ; // parasite power on
} else {
// Short circuit on bus
_delay_ms(1000);
}
}
int scanbus(void)
{
// outputs the number of found devices and stores all roms in an array
unsigned char id[8], diff;
unsigned char i,x;
unsigned char device_counter=0;
// clear array
for (x=1; x <= 20; x++)
{
romcodes[x][0] = 0;
}
for( diff = SEARCH_FIRST; diff != LAST_DEVICE; )
{
diff = therm_rom_search( diff, id );
if( diff == PRESENCE_ERR )
{
//Serial.println("scanbus: no sensors found");
_delay_ms(1000);
break;
}
if( diff == DATA_ERR )
{
//Serial.println("scanbus: Bus error");
_delay_ms(1000);
break;
}
if( id[0] == 0x28 || id[0] == 0x10 )
{
// valid temperature sensor found
// store romcode in array
for( i = 0; i < 8; i++ )
{
romcodes[device_counter][i]=id[i];
}
device_counter=device_counter+1;
}
}
return device_counter;
}
void therm_romtemp(uint8_t device)
{
// address a specific sensor and retrieve its temperature
uint8_t i;
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_CONVERTTEMP);
// wait until conversion is complete
while(!therm_read_bit());
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_RSCRATCHPAD);
// store the replies in the 'scratchpad' variable
for (i=0 ; i < 2; i++)
{
scratchpad[i]=therm_read_byte();
}
therm_reset();
}
void showdevs()
{
// outputs all device romcodes stored in the array
unsigned char device=0;
unsigned char rombyte=0;
uint8_t digit;
uint16_t decimal;
while (1)
{
if (romcodes[device][0] != 0)
{
// valid romcode found in array
// target the sensor and read its temperature
therm_romtemp(device); // this fills the 'scratchpad' variable
for (rombyte=0; rombyte < 8; rombyte++)
{
Serial.print(romcodes[device][rombyte],HEX); // display the romcode
Serial.print(" ");
}
Serial.print(" ");
// store temperature integer digits and decimal digits
// display the 'scratchpad' variable fields
// --half degree accuracy -- (9 bit)
// test if temperature is .0 or .5
//decimal = scratchpad[0] & (1 << 0); // decimals is in bit 0, store value
// move temperature bits on position to the right
//scratchpad[0]>>=1;
//Serial.print(scratchpad[0]);
//if (decimal == 0)
// Serial.print(".0");
//else
// Serial.print(".5");
// -- 2-decimal of a degree accuracy -- (12 bit)
// store whole digits
digit=scratchpad[0]>>4;
digit|=(scratchpad[1]&0x7)<<4;
// store decimal digits
decimal=scratchpad[0]&0xf;
decimal*=THERM_DECIMAL_STEPS_12BIT;
Serial.print(digit);
Serial.print(".");
Serial.print(decimal);
Serial.print(" C");
Serial.println();
_delay_ms(1000);
device=device+1;
} else {
break;
}
}
}
void loop()
{
uint8_t ack;
int devs;
while (1)
{
ack = owReset(THERM_DQ);
if (ack == 1)
{
//Serial.println("no sensors found");
_delay_ms(1000);
} else {
// sensor activity detected
while (1)
{
devs=scanbus(); // detect and store device rom's in an array
if (devs > 0)
{
_delay_ms(1000);
_delay_ms(1000);
showdevs();
} else {
Serial.print(devs);
Serial.println(" sensors found");
}
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
}
}
_delay_ms(1000);
_delay_ms(1000);
}
}
</pre>
b7a4342824850915703d14c0afb0e12a4f1c9a0c
3577
3574
2021-12-26T04:19:35Z
Admin
1
wikitext
text/x-wiki
<pre>
/*
DS18B20 code for DigiStump (ATtiny85) programmed with Arduino
- board manager url: http://digistump.com/package_digistump_index.json
- programmer: Micronucleus
This code does not rely on any external OneWire or DallasTemperature sensor libraries.
DS18B20 temperature sensor
-------------------------
DS18S20
byte 1 byte 2
-------------------------------
76543210 76543210
00101010 00000000
IIIIDDDD SSSSSIII
3210 654
I = Celsius integer digits (signed) 000 0010 = 2
D = Number of decimal steps (x multiplier) 1010 = 10 steps x 0.0625
S = Signedness (0=positive, 1=negative) 00000 = +
DS1820
LSB (1st 7 bits are the temperature)
and the last bit represents .0 or .5 degrees
Example: '87654321'
TTTTTTTH
T = Temperature
H = halves H=0 (.0), H=1 (.5)
MSB (is 0 when positive, 1 when negative)
*/
#include <avr/io.h>
#include <util/delay.h>
#define THERM_PORT PORTB
#define THERM_DDR DDRB
#define THERM_PIN PINB
#define THERM_DQ PB2 // Define DS1820 DQ pin
#define THERM_INPUT_MODE() THERM_DDR&=~(1<<THERM_DQ)
#define THERM_OUTPUT_MODE() THERM_DDR|=(1<<THERM_DQ)
#define THERM_LOW() THERM_PORT&=~(1<<THERM_DQ)
#define THERM_HIGH() THERM_PORT|=(1<<THERM_DQ)
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
#define THERM_CMD_CONVERTTEMP 0x44
#define THERM_CMD_RSCRATCHPAD 0xbe
#define THERM_CMD_WSCRATCHPAD 0x4e
#define THERM_CMD_CPYSCRATCHPAD 0x48
#define THERM_CMD_RECEEPROM 0xb8
#define THERM_CMD_RPWRSUPPLY 0xb4
#define THERM_CMD_SEARCHROM 0xf0
#define THERM_CMD_READROM 0x33
#define THERM_CMD_MATCHROM 0x55
#define THERM_CMD_SKIPROM 0xcc
#define THERM_CMD_ALARMSEARCH 0xec
#define THERM_DECIMAL_STEPS_12BIT 625 // 0.0625, for 12-bit accuracy
#define PRESENCE_ERR 0xFF
#define DATA_ERR 0xFF
#define LAST_DEVICE 0x00
#define SEARCH_FIRST 0xFF
#define CLEAR(s) memset(&(s), 0, sizeof(s)) // to clear an array
int got_ack;
uint8_t romcodes[20][9]; // store romcode of 20 sensors max
uint8_t scratchpad[9]; // stores a scratchpad
char buffer[16];
void setup()
{
//Serial.begin(9600);
}
void pMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin));
} else {
(DDRB &= ~(1 << pin));
}
}
void dWrite(int pin, int state)
{
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
int dRead(int pin)
{
if (bit_is_set(PINB,pin))
{
return 1;
} else {
return 0;
}
}
// -- OneWire functions --
uint8_t owReset(int Pin)
{
uint8_t i;
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
dWrite(Pin, LOW);
pMode(Pin, OUTPUT); // bring low for 480us
_delay_us(480);
// Release line and wait for 60us
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
_delay_us(60);
// store line value and wait for completion of 480us period
i=dRead(Pin);
_delay_us(480);
// return measured line value
return i;
}
uint8_t therm_reset()
{
uint8_t i;
// pull line low and wait for 480us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(480);
_delay_us(480);
// Release line and wait for 60us
THERM_INPUT_MODE();
//therm_delay(60);
_delay_us(60);
// store line value and wait for completion of 480us period
i=(THERM_PIN & (1<<THERM_DQ));
//therm_delay(420);
_delay_us(480);
// return measured line value
return i;
}
void therm_write_bit(uint8_t bit)
{
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// if we want to write 1, release the line (if not will keep low)
if (bit) THERM_INPUT_MODE();
// wait for 60us and release the line
//therm_delay(60);
_delay_us(60);
THERM_INPUT_MODE();
}
uint8_t therm_read_bit(void)
{
uint8_t bit=0;
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// release line and wait for 14us
THERM_INPUT_MODE();
//therm_delay(14);
_delay_us(14);
// read line value
if (THERM_PIN&(1<<THERM_DQ)) bit=1;
// wait for 45us to end and return read value
//therm_delay(45);
_delay_us(45);
return bit;
}
uint8_t therm_read_byte(void)
{
uint8_t i=8, n=0;
while(i--)
{
// shift one position right and store read value
n>>=1;
n|=(therm_read_bit()<<7);
}
return n;
}
void therm_write_byte(uint8_t byte)
{
uint8_t i=8;
while(i--)
{
// write actual bit and shift one position right to make the next bit ready
therm_write_bit(byte&1);
byte>>=1;
}
}
unsigned char therm_rom_search(unsigned char diff, unsigned char *id)
{
// scans a one-wire bus for all attached DS18x20 sensors
unsigned char i, j, next_diff;
unsigned char b;
if( therm_reset() )
return PRESENCE_ERR; // error, no device found
therm_write_byte( THERM_CMD_SEARCHROM ); // ROM search command
next_diff = LAST_DEVICE; // unchanged on last device
i = 8 * 8; // 8 bytes
do
{
j = 8; // 8 bits
do
{
b = therm_read_bit(); // read bit
// read complement bit
if( therm_read_bit() )
{
if( b ) // 11
return DATA_ERR; // data error
} else {
if( !b )
{
// 00 = 2 devices
if( diff > i || ((*id & 1) && diff != i) )
{
b = 1; // now 1
next_diff = i; // next pass 0
}
}
}
therm_write_bit( b ); // write bit
*id >>= 1;
if( b ) // store bit
*id |= 0x80;
i--;
} while( --j );
id++; // next byte
} while( i );
return next_diff; // to continue search
}
void start_meas( void )
{
if( PINB & 1<< THERM_DQ )
{
therm_write_byte(THERM_CMD_CONVERTTEMP); // read scratchpad
PORTB |= 1<< THERM_DQ;
DDRB |= 1<< THERM_DQ; // parasite power on
} else {
// Short circuit on bus
_delay_ms(1000);
}
}
int scanbus(void)
{
// outputs the number of found devices and stores all roms in an array
unsigned char id[8], diff;
unsigned char i,x;
unsigned char device_counter=0;
// clear array
for (x=1; x <= 20; x++)
{
romcodes[x][0] = 0;
}
for( diff = SEARCH_FIRST; diff != LAST_DEVICE; )
{
diff = therm_rom_search( diff, id );
if( diff == PRESENCE_ERR )
{
//Serial.println("scanbus: no sensors found");
_delay_ms(1000);
break;
}
if( diff == DATA_ERR )
{
//Serial.println("scanbus: Bus error");
_delay_ms(1000);
break;
}
if( id[0] == 0x28 || id[0] == 0x10 )
{
// valid temperature sensor found
// store romcode in array
for( i = 0; i < 8; i++ )
{
romcodes[device_counter][i]=id[i];
}
device_counter=device_counter+1;
}
}
return device_counter;
}
void therm_romtemp(uint8_t device)
{
// address a specific sensor and retrieve its temperature
uint8_t i;
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_CONVERTTEMP);
// wait until conversion is complete
while(!therm_read_bit());
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_RSCRATCHPAD);
// store the replies in the 'scratchpad' variable
for (i=0 ; i < 2; i++)
{
scratchpad[i]=therm_read_byte();
}
therm_reset();
}
void showdevs()
{
// outputs all device romcodes stored in the array
unsigned char device=0;
unsigned char rombyte=0;
uint8_t digit;
uint16_t decimal;
while (1)
{
if (romcodes[device][0] != 0)
{
// valid romcode found in array
// target the sensor and read its temperature
therm_romtemp(device); // this fills the 'scratchpad' variable
for (rombyte=0; rombyte < 8; rombyte++)
{
//Serial.print(romcodes[device][rombyte],HEX); // display the romcode
//Serial.print(" ");
}
//Serial.print(" ");
// store temperature integer digits and decimal digits
// display the 'scratchpad' variable fields
// --half degree accuracy -- (9 bit)
// test if temperature is .0 or .5
//decimal = scratchpad[0] & (1 << 0); // decimals is in bit 0, store value
// move temperature bits on position to the right
//scratchpad[0]>>=1;
//Serial.print(scratchpad[0]);
//if (decimal == 0)
// Serial.print(".0");
//else
// Serial.print(".5");
// -- 2-decimal of a degree accuracy -- (12 bit)
// store whole digits
digit=scratchpad[0]>>4;
digit|=(scratchpad[1]&0x7)<<4;
// store decimal digits
decimal=scratchpad[0]&0xf;
decimal*=THERM_DECIMAL_STEPS_12BIT;
//Serial.print(digit);
//Serial.print(".");
//Serial.print(decimal);
//Serial.print(" C");
//Serial.println();
_delay_ms(1000);
device=device+1;
} else {
break;
}
}
}
void loop()
{
uint8_t ack;
int devs;
while (1)
{
ack = owReset(THERM_DQ);
if (ack == 1)
{
//Serial.println("no sensors found");
_delay_ms(1000);
} else {
// sensor activity detected
while (1)
{
devs=scanbus(); // detect and store device rom's in an array
if (devs > 0)
{
_delay_ms(1000);
_delay_ms(1000);
showdevs();
} else {
//Serial.print(devs);
//Serial.println(" sensors found");
}
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
}
}
_delay_ms(1000);
_delay_ms(1000);
}
}
</pre>
ad5d004980c39afb1f75b7019777e689b88723c2
3578
3577
2021-12-27T01:49:44Z
Admin
1
wikitext
text/x-wiki
<pre>
/*
DS18B20 code for DigiSpark (ATtiny85) programmed with Arduino
- board manager url: http://digistump.com/package_digistump_index.json
- board: Digispark Default (16.5MHz)
- programmer: Micronucleus
NOTE: the digispark board requires re-insertion in a USB socket every time you wish to upload code to it.
This code does not rely on any external OneWire or DallasTemperature sensor libraries.
DS18B20 temperature sensor
-------------------------
DS18S20
byte 1 byte 2
-------------------------------
76543210 76543210
00101010 00000000
IIIIDDDD SSSSSIII
3210 654
I = Celsius integer digits (signed) 000 0010 = 2
D = Number of decimal steps (x multiplier) 1010 = 10 steps x 0.0625
S = Signedness (0=positive, 1=negative) 00000 = +
DS1820
LSB (1st 7 bits are the temperature)
and the last bit represents .0 or .5 degrees
Example: '87654321'
TTTTTTTH
T = Temperature
H = halves H=0 (.0), H=1 (.5)
MSB (is 0 when positive, 1 when negative)
*/
#include <avr/io.h>
#include <util/delay.h>
#define THERM_PORT PORTB
#define THERM_DDR DDRB
#define THERM_PIN PINB
#define THERM_DQ PB0 // Define DS1820 DQ pin
#define LEDPIN PB1 // built-in LED is on PB1 (Digispark Model A)
#define THERM_INPUT_MODE() THERM_DDR&=~(1<<THERM_DQ)
#define THERM_OUTPUT_MODE() THERM_DDR|=(1<<THERM_DQ)
#define THERM_LOW() THERM_PORT&=~(1<<THERM_DQ)
#define THERM_HIGH() THERM_PORT|=(1<<THERM_DQ)
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
#define THERM_CMD_CONVERTTEMP 0x44
#define THERM_CMD_RSCRATCHPAD 0xbe
#define THERM_CMD_WSCRATCHPAD 0x4e
#define THERM_CMD_CPYSCRATCHPAD 0x48
#define THERM_CMD_RECEEPROM 0xb8
#define THERM_CMD_RPWRSUPPLY 0xb4
#define THERM_CMD_SEARCHROM 0xf0
#define THERM_CMD_READROM 0x33
#define THERM_CMD_MATCHROM 0x55
#define THERM_CMD_SKIPROM 0xcc
#define THERM_CMD_ALARMSEARCH 0xec
#define THERM_DECIMAL_STEPS_12BIT 625 // 0.0625, for 12-bit accuracy
#define PRESENCE_ERR 0xFF
#define DATA_ERR 0xFF
#define LAST_DEVICE 0x00
#define SEARCH_FIRST 0xFF
#define CLEAR(s) memset(&(s), 0, sizeof(s)) // to clear an array
int got_ack;
uint8_t romcodes[20][9]; // store romcode of 20 sensors max
uint8_t scratchpad[9]; // stores a scratchpad
char buffer[16];
void setup()
{
}
void pMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin));
} else {
(DDRB &= ~(1 << pin));
}
}
void dWrite(int pin, int state)
{
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
int dRead(int pin)
{
if (bit_is_set(PINB,pin))
{
return 1;
} else {
return 0;
}
}
void singleBlink()
{
pMode(LEDPIN,OUTPUT);
dWrite(LEDPIN,HIGH);
_delay_ms(50);
dWrite(LEDPIN,LOW);
_delay_ms(500);
}
void nrBlinker(int nr)
{
if (nr < 100)
for (int i=int(nr/10); i>0; i--)
singleBlink(); // blink tens
nr = nr - (int) (nr / 10) * 10;
delay(1000);
if (nr < 10)
for (int i=nr; i>0; i--)
singleBlink(); // blink ones
}
// -- OneWire functions --
uint8_t owReset(int Pin)
{
uint8_t i;
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
dWrite(Pin, LOW);
pMode(Pin, OUTPUT); // bring low for 480us
_delay_us(480);
// Release line and wait for 60us
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
_delay_us(60);
// store line value and wait for completion of 480us period
i=dRead(Pin);
_delay_us(480);
// return measured line value
return i;
}
uint8_t therm_reset()
{
uint8_t i;
// pull line low and wait for 480us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(480);
_delay_us(480);
// Release line and wait for 60us
THERM_INPUT_MODE();
//therm_delay(60);
_delay_us(60);
// store line value and wait for completion of 480us period
i=(THERM_PIN & (1<<THERM_DQ));
//therm_delay(420);
_delay_us(480);
// return measured line value
return i;
}
void therm_write_bit(uint8_t bit)
{
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// if we want to write 1, release the line (if not will keep low)
if (bit) THERM_INPUT_MODE();
// wait for 60us and release the line
//therm_delay(60);
_delay_us(60);
THERM_INPUT_MODE();
}
uint8_t therm_read_bit(void)
{
uint8_t bit=0;
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// release line and wait for 14us
THERM_INPUT_MODE();
//therm_delay(14);
_delay_us(14);
// read line value
if (THERM_PIN&(1<<THERM_DQ)) bit=1;
// wait for 45us to end and return read value
//therm_delay(45);
_delay_us(45);
return bit;
}
uint8_t therm_read_byte(void)
{
uint8_t i=8, n=0;
while(i--)
{
// shift one position right and store read value
n>>=1;
n|=(therm_read_bit()<<7);
}
return n;
}
void therm_write_byte(uint8_t byte)
{
uint8_t i=8;
while(i--)
{
// write actual bit and shift one position right to make the next bit ready
therm_write_bit(byte&1);
byte>>=1;
}
}
unsigned char therm_rom_search(unsigned char diff, unsigned char *id)
{
// scans a one-wire bus for all attached DS18x20 sensors
unsigned char i, j, next_diff;
unsigned char b;
if( therm_reset() )
return PRESENCE_ERR; // error, no device found
therm_write_byte( THERM_CMD_SEARCHROM ); // ROM search command
next_diff = LAST_DEVICE; // unchanged on last device
i = 8 * 8; // 8 bytes
do
{
j = 8; // 8 bits
do
{
b = therm_read_bit(); // read bit
// read complement bit
if( therm_read_bit() )
{
if( b ) // 11
return DATA_ERR; // data error
} else {
if( !b )
{
// 00 = 2 devices
if( diff > i || ((*id & 1) && diff != i) )
{
b = 1; // now 1
next_diff = i; // next pass 0
}
}
}
therm_write_bit( b ); // write bit
*id >>= 1;
if( b ) // store bit
*id |= 0x80;
i--;
} while( --j );
id++; // next byte
} while( i );
return next_diff; // to continue search
}
void start_meas( void )
{
if( PINB & 1<< THERM_DQ )
{
therm_write_byte(THERM_CMD_CONVERTTEMP); // read scratchpad
PORTB |= 1<< THERM_DQ;
DDRB |= 1<< THERM_DQ; // parasite power on
} else {
// Short circuit on bus
_delay_ms(1000);
}
}
int scanbus(void)
{
// outputs the number of found devices and stores all roms in an array
unsigned char id[8], diff;
unsigned char i,x;
unsigned char device_counter=0;
// clear array
for (x=1; x <= 20; x++)
{
romcodes[x][0] = 0;
}
for( diff = SEARCH_FIRST; diff != LAST_DEVICE; )
{
diff = therm_rom_search( diff, id );
if( diff == PRESENCE_ERR )
{
//Serial.println("scanbus: no sensors found");
_delay_ms(1000);
break;
}
if( diff == DATA_ERR )
{
//Serial.println("scanbus: Bus error");
_delay_ms(1000);
break;
}
if( id[0] == 0x28 || id[0] == 0x10 )
{
// valid temperature sensor found
// store romcode in array
for( i = 0; i < 8; i++ )
{
romcodes[device_counter][i]=id[i];
}
device_counter=device_counter+1;
}
}
return device_counter;
}
void therm_romtemp(uint8_t device)
{
// address a specific sensor and retrieve its temperature
uint8_t i;
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_CONVERTTEMP);
// wait until conversion is complete
while(!therm_read_bit());
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_RSCRATCHPAD);
// store the replies in the 'scratchpad' variable
for (i=0 ; i < 2; i++)
{
scratchpad[i]=therm_read_byte();
}
therm_reset();
}
void showdevs()
{
// outputs all device romcodes stored in the array
unsigned char device=0;
unsigned char rombyte=0;
uint8_t digit;
uint16_t decimal;
while (1)
{
if (romcodes[device][0] != 0)
{
// valid romcode found in array
// target the sensor and read its temperature
therm_romtemp(device); // this fills the 'scratchpad' variable
for (rombyte=0; rombyte < 8; rombyte++)
{
//Serial.print(romcodes[device][rombyte],HEX); // display the romcode
//Serial.print(" ");
}
//Serial.print(" ");
// store temperature integer digits and decimal digits
// display the 'scratchpad' variable fields
// --half degree accuracy -- (9 bit)
// test if temperature is .0 or .5
//decimal = scratchpad[0] & (1 << 0); // decimals is in bit 0, store value
// move temperature bits on position to the right
//scratchpad[0]>>=1;
//Serial.print(scratchpad[0]);
//if (decimal == 0)
// Serial.print(".0");
//else
// Serial.print(".5");
// -- 2-decimal of a degree accuracy -- (12 bit)
// store whole digits
digit=scratchpad[0]>>4;
digit|=(scratchpad[1]&0x7)<<4;
// store decimal digits
decimal=scratchpad[0]&0xf;
decimal*=THERM_DECIMAL_STEPS_12BIT;
//Serial.print(digit);
//Serial.print(".");
//Serial.print(decimal);
//Serial.print(" C");
nrBlinker(digit);
_delay_ms(1000);
// decimals are stored as a 4-digit positive number (e.g. 3625), scale back to < 100
decimal = (int) (decimal / 100);
nrBlinker(decimal);
_delay_ms(1000);
_delay_ms(1000);
device=device+1;
} else {
break;
}
}
}
void loop()
{
uint8_t ack;
int devs;
while (1)
{
ack = owReset(THERM_DQ);
if (ack == 1)
{
// no sensors found
nrBlinker(2);
} else {
// sensor activity detected
devs=scanbus(); // detect and store device rom's in an array
if (devs > 0)
{
_delay_ms(1000);
_delay_ms(1000);
showdevs();
} else {
// unable to get sensible data back from sensors
}
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
}
_delay_ms(1000);
_delay_ms(1000);
}
}
</pre>
95c05c02ca828125064f5aabf96a927cf1e9f16b
ATMega328 DS18B20
0
864
3576
2021-12-26T03:05:07Z
Admin
1
Created page with " <pre> /* DS18B20 code for ATMega328 (arduino) This code does not rely on any external OneWire or DallasTemperature sensor libraries. DS18B20 temperature sensor ------------------------- DS18S20 byte 1 byte 2 ------------------------------- 76543210 76543210 00101010 00000000 IIIIDDDD SSSSSIII 3210..."
wikitext
text/x-wiki
<pre>
/*
DS18B20 code for ATMega328 (arduino)
This code does not rely on any external OneWire or DallasTemperature sensor libraries.
DS18B20 temperature sensor
-------------------------
DS18S20
byte 1 byte 2
-------------------------------
76543210 76543210
00101010 00000000
IIIIDDDD SSSSSIII
3210 654
I = Celsius integer digits (signed) 000 0010 = 2
D = Number of decimal steps (x multiplier) 1010 = 10 steps x 0.0625
S = Signedness (0=positive, 1=negative) 00000 = +
DS1820
LSB (1st 7 bits are the temperature)
and the last bit represents .0 or .5 degrees
Example: '87654321'
TTTTTTTH
T = Temperature
H = halves H=0 (.0), H=1 (.5)
MSB (is 0 when positive, 1 when negative)
*/
//#include <avr/io.h>
//#include <util/delay.h>
//#include <string.h>
//#include <math.h>
#define THERM_PORT PORTB
#define THERM_DDR DDRB
#define THERM_PIN PINB
#define THERM_DQ PB2 // Define DS1820 DQ pin
#define THERM_INPUT_MODE() THERM_DDR&=~(1<<THERM_DQ)
#define THERM_OUTPUT_MODE() THERM_DDR|=(1<<THERM_DQ)
#define THERM_LOW() THERM_PORT&=~(1<<THERM_DQ)
#define THERM_HIGH() THERM_PORT|=(1<<THERM_DQ)
#define HIGH 1
#define LOW 0
#define INPUT 1
#define OUTPUT 0
#define THERM_CMD_CONVERTTEMP 0x44
#define THERM_CMD_RSCRATCHPAD 0xbe
#define THERM_CMD_WSCRATCHPAD 0x4e
#define THERM_CMD_CPYSCRATCHPAD 0x48
#define THERM_CMD_RECEEPROM 0xb8
#define THERM_CMD_RPWRSUPPLY 0xb4
#define THERM_CMD_SEARCHROM 0xf0
#define THERM_CMD_READROM 0x33
#define THERM_CMD_MATCHROM 0x55
#define THERM_CMD_SKIPROM 0xcc
#define THERM_CMD_ALARMSEARCH 0xec
#define THERM_DECIMAL_STEPS_12BIT 625 // 0.0625, for 12-bit accuracy
#define PRESENCE_ERR 0xFF
#define DATA_ERR 0xFF
#define LAST_DEVICE 0x00
#define SEARCH_FIRST 0xFF
#define CLEAR(s) memset(&(s), 0, sizeof(s)) // to clear an array
int got_ack;
uint8_t romcodes[20][9]; // store romcode of 20 sensors max
uint8_t scratchpad[9]; // stores a scratchpad
char buffer[16];
void setup()
{
Serial.begin(9600);
}
void pMode(int pin,int state)
{
if (state == OUTPUT)
{
(DDRB |= (1 << pin));
} else {
(DDRB &= ~(1 << pin));
}
}
void dWrite(int pin, int state)
{
if (state == HIGH)
{
(PORTB |= (1 << pin));
} else {
(PORTB &= ~(1 << pin));
}
}
int dRead(int pin)
{
if (bit_is_set(PINB,pin))
{
return 1;
} else {
return 0;
}
}
// -- OneWire functions --
uint8_t owReset(int Pin)
{
uint8_t i;
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
dWrite(Pin, LOW);
pMode(Pin, OUTPUT); // bring low for 480us
_delay_us(480);
// Release line and wait for 60us
dWrite(Pin, HIGH);
pMode(Pin, INPUT);
_delay_us(60);
// store line value and wait for completion of 480us period
i=dRead(Pin);
_delay_us(480);
// return measured line value
return i;
}
uint8_t therm_reset()
{
uint8_t i;
// pull line low and wait for 480us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(480);
_delay_us(480);
// Release line and wait for 60us
THERM_INPUT_MODE();
//therm_delay(60);
_delay_us(60);
// store line value and wait for completion of 480us period
i=(THERM_PIN & (1<<THERM_DQ));
//therm_delay(420);
_delay_us(480);
// return measured line value
return i;
}
void therm_write_bit(uint8_t bit)
{
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// if we want to write 1, release the line (if not will keep low)
if (bit) THERM_INPUT_MODE();
// wait for 60us and release the line
//therm_delay(60);
_delay_us(60);
THERM_INPUT_MODE();
}
uint8_t therm_read_bit(void)
{
uint8_t bit=0;
// pull line low for 1us
THERM_LOW();
THERM_OUTPUT_MODE();
//therm_delay(1);
_delay_us(1);
// release line and wait for 14us
THERM_INPUT_MODE();
//therm_delay(14);
_delay_us(14);
// read line value
if (THERM_PIN&(1<<THERM_DQ)) bit=1;
// wait for 45us to end and return read value
//therm_delay(45);
_delay_us(45);
return bit;
}
uint8_t therm_read_byte(void)
{
uint8_t i=8, n=0;
while(i--)
{
// shift one position right and store read value
n>>=1;
n|=(therm_read_bit()<<7);
}
return n;
}
void therm_write_byte(uint8_t byte)
{
uint8_t i=8;
while(i--)
{
// write actual bit and shift one position right to make the next bit ready
therm_write_bit(byte&1);
byte>>=1;
}
}
unsigned char therm_rom_search(unsigned char diff, unsigned char *id)
{
// scans a one-wire bus for all attached DS18x20 sensors
unsigned char i, j, next_diff;
unsigned char b;
if( therm_reset() )
return PRESENCE_ERR; // error, no device found
therm_write_byte( THERM_CMD_SEARCHROM ); // ROM search command
next_diff = LAST_DEVICE; // unchanged on last device
i = 8 * 8; // 8 bytes
do
{
j = 8; // 8 bits
do
{
b = therm_read_bit(); // read bit
// read complement bit
if( therm_read_bit() )
{
if( b ) // 11
return DATA_ERR; // data error
} else {
if( !b )
{
// 00 = 2 devices
if( diff > i || ((*id & 1) && diff != i) )
{
b = 1; // now 1
next_diff = i; // next pass 0
}
}
}
therm_write_bit( b ); // write bit
*id >>= 1;
if( b ) // store bit
*id |= 0x80;
i--;
} while( --j );
id++; // next byte
} while( i );
return next_diff; // to continue search
}
void start_meas( void )
{
if( PINB & 1<< THERM_DQ )
{
therm_write_byte(THERM_CMD_CONVERTTEMP); // read scratchpad
PORTB |= 1<< THERM_DQ;
DDRB |= 1<< THERM_DQ; // parasite power on
} else {
// Short circuit on bus
_delay_ms(1000);
}
}
int scanbus(void)
{
// outputs the number of found devices and stores all roms in an array
unsigned char id[8], diff;
unsigned char i,x;
unsigned char device_counter=0;
// clear array
for (x=1; x <= 20; x++)
{
romcodes[x][0] = 0;
}
for( diff = SEARCH_FIRST; diff != LAST_DEVICE; )
{
diff = therm_rom_search( diff, id );
if( diff == PRESENCE_ERR )
{
//Serial.println("scanbus: no sensors found");
_delay_ms(1000);
break;
}
if( diff == DATA_ERR )
{
//Serial.println("scanbus: Bus error");
_delay_ms(1000);
break;
}
if( id[0] == 0x28 || id[0] == 0x10 )
{
// valid temperature sensor found
// store romcode in array
for( i = 0; i < 8; i++ )
{
romcodes[device_counter][i]=id[i];
}
device_counter=device_counter+1;
}
}
return device_counter;
}
void therm_romtemp(uint8_t device)
{
// address a specific sensor and retrieve its temperature
uint8_t i;
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_CONVERTTEMP);
// wait until conversion is complete
while(!therm_read_bit());
therm_reset();
therm_write_byte(THERM_CMD_MATCHROM);
for (i=0 ; i < 8; i++)
{
therm_write_byte(romcodes[device][i]);
}
therm_write_byte(THERM_CMD_RSCRATCHPAD);
// store the replies in the 'scratchpad' variable
for (i=0 ; i < 2; i++)
{
scratchpad[i]=therm_read_byte();
}
therm_reset();
}
void showdevs()
{
// outputs all device romcodes stored in the array
unsigned char device=0;
unsigned char rombyte=0;
uint8_t digit;
uint16_t decimal;
while (1)
{
if (romcodes[device][0] != 0)
{
// valid romcode found in array
// target the sensor and read its temperature
therm_romtemp(device); // this fills the 'scratchpad' variable
for (rombyte=0; rombyte < 8; rombyte++)
{
Serial.print(romcodes[device][rombyte],HEX); // display the romcode
Serial.print(" ");
}
Serial.print(" ");
// store temperature integer digits and decimal digits
// display the 'scratchpad' variable fields
// --half degree accuracy -- (9 bit)
// test if temperature is .0 or .5
//decimal = scratchpad[0] & (1 << 0); // decimals is in bit 0, store value
// move temperature bits on position to the right
//scratchpad[0]>>=1;
//Serial.print(scratchpad[0]);
//if (decimal == 0)
// Serial.print(".0");
//else
// Serial.print(".5");
// -- 2-decimal of a degree accuracy -- (12 bit)
// store whole digits
digit=scratchpad[0]>>4;
digit|=(scratchpad[1]&0x7)<<4;
// store decimal digits
decimal=scratchpad[0]&0xf;
decimal*=THERM_DECIMAL_STEPS_12BIT;
Serial.print(digit);
Serial.print(".");
Serial.print(decimal);
Serial.print(" C");
Serial.println();
_delay_ms(1000);
device=device+1;
} else {
break;
}
}
}
void loop()
{
uint8_t ack;
int devs;
while (1)
{
ack = owReset(THERM_DQ);
if (ack == 1)
{
//Serial.println("no sensors found");
_delay_ms(1000);
} else {
// sensor activity detected
while (1)
{
devs=scanbus(); // detect and store device rom's in an array
if (devs > 0)
{
_delay_ms(1000);
_delay_ms(1000);
showdevs();
} else {
Serial.print(devs);
Serial.println(" sensors found");
}
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
_delay_ms(1000);
}
}
_delay_ms(1000);
_delay_ms(1000);
}
}
</pre>
7efd35147f3c0a4934004784494d852be777b237
File:H34A-module.jpg
6
865
3581
2021-12-27T23:15:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0139-remote-433MHz-transmitter
0
866
3582
2021-12-27T23:15:32Z
Admin
1
Created page with "Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter. [[File:H34A-module.jpg]]"
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
[[File:H34A-module.jpg]]
74539006d6ead10a90eafef71becb0c9d3018d9e
File:0139 Prototype-1 Arduino-nano.jpg
6
867
3583
2021-12-27T23:17:33Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139 Prototype-2 Digispark ATtiny85.jpg
6
868
3584
2021-12-27T23:19:11Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0139-remote-433MHz-transmitter
0
866
3585
3582
2021-12-27T23:19:23Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
[[File:H34A-module.jpg]]
[[File:0139 Prototype-1 Arduino-nano.jpg]]
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
e5f25629d38dca50c4bca9f911c44027cbcb81e8
3587
3585
2021-12-27T23:28:27Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
c44ce645ee63a673ab8927443591ce8a0fa5bbe2
3588
3587
2021-12-28T00:48:12Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Bill of materials (PCB v1.3):
* H34A transmitter module
* ATtiny85 SOIC
*
*
9535de00a8b86a2cc7b698544e34e7b92702d271
3589
3588
2021-12-28T01:04:45Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Bill of materials (PCB v1.3):
<pre>
0139 433mhz transmitter bill of materials
R1 1206 20k
R2 1206 4k7
R3 1206 1k
R4 1206 10k
R5 1206 10k
R6 1206 10R
R7 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 1uF
C4 1206 1uF
U1 SOIC ATTiny85
U2 TO-92 DS18B20
U3 SOT23-5 NCP718
U4 11x11mm H34A module
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
</pre>
a99c2ec791034191b977f2a8177422a0b36617d0
3591
3589
2021-12-28T01:17:20Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.3 schematic.png]]
<pre>
0139 433mhz transmitter bill of materials (PCB v1.3)
R1 1206 20k
R2 1206 4k7
R3 1206 1k
R4 1206 10k
R5 1206 10k
R6 1206 10R
R7 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 1uF
C4 1206 1uF
U1 SOIC ATTiny85
U2 TO-92 DS18B20
U3 SOT23-5 NCP718
U4 11x11mm H34A module
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
</pre>
428e402161d95ee06fd761349c9faeaad58cb5fb
3592
3591
2022-01-01T03:09:28Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.3 schematic.png]]
<pre>
0139 433mhz transmitter bill of materials -- PCB v1.4
R1 1206 20k
R2 1206 4k7
R3 1206 1k
R4 1206 10k
R5 1206 10k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 1uF
C4 1206 1uF
U1 SOIC ATTiny85
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
</pre>
c35b934f6ce532080ed347a0f1711e90098edc5b
3595
3592
2022-01-01T03:23:04Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.3 schematic.png]]
Gerbers: [[File:0139-remote-sensors-433Mhz v1.4 gerbers.zip]]
Source code: [[File:0139 remote 433MHz transmitter v0.5.ino.zip]]
<pre>
0139 433mhz transmitter bill of materials -- PCB v1.4
R1 1206 20k
R2 1206 4k7
R3 1206 1k
R4 1206 10k
R5 1206 10k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 1uF
C4 1206 1uF
U1 SOIC ATTiny85
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
</pre>
7046170aa22ef4b968cb55e6358f26a65a8518ed
3596
3595
2022-05-21T03:45:53Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.3 schematic.png]]
Gerbers: [[File:0139-remote-sensors-433Mhz v1.4 gerbers.zip]]
Source code: [[File:0139 remote 433MHz transmitter v0.5.ino.zip]]
<pre>
0139 remote sensors 433mhz transmitter bill of materials -- PCB v1.5
R1 1206 22k
R2 1206 4k7
R3 1206 1k
R4 1206 100k
R5 1206 100k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 100nF
C4 1206 10nuF
U1 SOIC ATTiny85-20SH
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
H34A-433 ASK transmitter 433MHz 2.6-12V
</pre>
064fdbb9d7489cf12bcab08951ea8b0254dd9530
3597
3596
2022-05-21T03:48:13Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.5 schematic.png]]
Gerbers: [[File:0139-remote-sensors-433Mhz v1.4 gerbers.zip]]
Source code: [[File:0139 remote 433MHz transmitter v0.5.ino.zip]]
<pre>
0139 remote sensors 433mhz transmitter bill of materials -- PCB v1.5
R1 1206 22k
R2 1206 4k7
R3 1206 1k
R4 1206 100k
R5 1206 100k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 100nF
C4 1206 10nuF
U1 SOIC ATTiny85-20SH
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
H34A-433 ASK transmitter 433MHz 2.6-12V
</pre>
09f8a01e39192e8fb01e68ed5cc154c8d13bbe6a
3601
3597
2022-05-21T03:55:47Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Schematic:
[[File:0139 PCB v1.5 schematic.png]]
Gerbers: [[File:0139-remote-sensors-433Mhz v1.4 gerbers.zip]]
Source code: [[File:0139 remote 433MHz transmitter v0.6.ino.zip]]
<pre>
0139 remote sensors 433mhz transmitter bill of materials -- PCB v1.5
R1 1206 22k
R2 1206 4k7
R3 1206 1k
R4 1206 100k
R5 1206 100k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 100nF
C4 1206 10nuF
U1 SOIC ATTiny85-20SH
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
H34A-433 ASK transmitter 433MHz 2.6-12V
</pre>
094fdf3fe177b46dc4bbe190bf00c9cdca91287b
3616
3601
2023-03-23T23:12:12Z
Admin
1
wikitext
text/x-wiki
Home automation project sending telemetry using a low-cost ISM-band (433MHz) transmitter.
This is a change of plan from what I originally intended to use (the RFM69HW modules), but with several home automation solutions easily available I decided to make use of these modules instead.
This is the bare transmitter module.
[[File:H34A-module.jpg]]
Here is the transmitter module wrapped in heatshrink and stuck on top of an Arduino Nano
[[File:0139 Prototype-1 Arduino-nano.jpg]]
Making the overall form factor even smaller by contemplating putting it on a Digispark board.
[[File:0139 Prototype-2 Digispark ATtiny85.jpg]]
The benefit is that the ATtiny85 modules are fairly cheap and can hold up to 8kB of program memory. A quarter the size of the ATMega328 Arduino but probably still more than enough to send some telemetry.
This is the module fitted onto a custom PCB that has the ATtiny85 on the underside.
[[File:0139 Prototype-3 Attiny V1.0.jpg]]
Final result on top of a 3D printer battery holder
[[File:18650-T85-telemetry.jpg]]
Schematic:
[[File:0139 PCB v1.5 schematic.png]]
Gerbers: [[File:0139-remote-sensors-433Mhz v1.4 gerbers.zip]]
Source code: [[File:0139 remote 433MHz transmitter v0.6.ino.zip]]
<pre>
0139 remote sensors 433mhz transmitter bill of materials -- PCB v1.5
R1 1206 22k
R2 1206 4k7
R3 1206 1k
R4 1206 100k
R5 1206 100k
R6 1206 4k7
C1 1206 1uF
C2 1206 1uF
C3 1206 100nF
C4 1206 10nuF
U1 SOIC ATTiny85-20SH
U2 TO-92 DS18B20
U3 TSOT23-5 NCP718ASN330T1G
T1 SOT23 (N-Ch FET) BSS138 or Si2302DS
T2 SOT23 (P-Ch FET) NDS352AP or BSH203
T3 SOT23 (P-Ch FET) NDS352AP or BSH203
D1 1206 LED
H34A-433 ASK transmitter 433MHz 2.6-12V
</pre>
709da82d7d4a4e78e71b2225df07bc0fd298a76e
File:0139 Prototype-3 Attiny V1.0.jpg
6
869
3586
2021-12-27T23:24:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139 PCB v1.3 schematic.png
6
870
3590
2021-12-28T01:16:42Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139-remote-sensors-433Mhz v1.4 gerbers.zip
6
871
3593
2022-01-01T03:21:28Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139 remote 433MHz transmitter v0.5.ino.zip
6
872
3594
2022-01-01T03:22:55Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139 PCB v1.5 schematic.png
6
874
3599
2022-05-21T03:49:39Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:0139 remote 433MHz transmitter v0.6.ino.zip
6
875
3600
2022-05-21T03:55:22Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0126-iambic-keyer
0
664
3602
3519
2022-06-02T22:52:28Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo speaker (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo buzzer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD)
</code>
==Sidetone==
The keyer uses an internal oscillator for generating a sidetone. It is therefore recommended to use a piezo transducer in the design (do not use a buzzer that produces a tone when a dc voltage is applied). The keyer sidetone is useful for generating beeps when interacting with the keyer menu but it can also serve as audible feedback when the radio you're working with does not produce any tones when triggering the PTT line in CW mode. Enabling or disabling the keyer sidetone, as well as the pitch, can be set from the keyer menu.
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
e1f305b2b6ba73e00590dc59b162af015da67236
3603
3602
2022-06-02T22:53:49Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo speaker (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo transducer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD) (2017 prices)
</code>
==Sidetone==
The keyer uses an internal oscillator for generating a sidetone. It is therefore recommended to use a piezo transducer in the design (do not use a buzzer that produces a tone when a dc voltage is applied). The keyer sidetone is useful for generating beeps when interacting with the keyer menu but it can also serve as audible feedback when the radio you're working with does not produce any tones when triggering the PTT line in CW mode. Enabling or disabling the keyer sidetone, as well as the pitch, can be set from the keyer menu.
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
9eeeb4ca0a838f548eb586a261d28459c37d1957
3604
3603
2022-06-02T22:54:25Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo speaker (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo transducer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD) (2017 prices)
</code>
===Sidetone===
The keyer uses an internal oscillator for generating a sidetone. It is therefore recommended to use a piezo transducer in the design (do not use a buzzer that produces a tone when a dc voltage is applied). The keyer sidetone is useful for generating beeps when interacting with the keyer menu but it can also serve as audible feedback when the radio you're working with does not produce any tones when triggering the PTT line in CW mode. Enabling or disabling the keyer sidetone, as well as the pitch, can be set from the keyer menu.
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
14e7c0919f966dea7326374adc2f5d68e7e86824
3605
3604
2022-06-02T22:55:10Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo speaker (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo transducer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD) (2017 prices)
</code>
===Sidetone===
The keyer uses an internal oscillator for generating a sidetone. It is therefore recommended to use a piezo transducer in the design (do not use a buzzer that produces a tone when a dc voltage is applied). The keyer sidetone is useful for generating beeps when interacting with the keyer menu but it can also serve as audible feedback when the radio you're working with does not produce any tones when triggering the PTT line in CW mode. Enabling or disabling the keyer sidetone, as well as changing the pitch, can be set from the keyer menu.
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
73e2f53591e2f412c2db2daea9510af35ac19720
3606
3605
2022-06-02T22:55:45Z
Admin
1
wikitext
text/x-wiki
Sending Morse Code is a hobby that is still alive and well. This board uses an ATtiny45 or ATtiny85 microcontroller and can be used with an iambic keyer to send morse code. The code fits in a 4k ATtiny45 or the bigger 8k ATtiny85 Program Memory Flash.
I got the idea and code from Jack Welch: http://blog.templaro.com/?p=1315 (code here: https://github.com/dhakajack/jackyack/), who got his idea from Jan Lategahn, DK3LJ who has the original sources here: http://yack.sourceforge.net/
Brief overview of the main features:
* keying speed settable from 5 to 50wpm
* toggle paddle swap (if dit and dah paddles are wired incorrectly)
* chip-generated side tone to drive a small piezo transducer (adjustable pitch from 400-1500Hz or turned off completely)
* output TX switch-to-ground using low-power 2N7000 N-Channel FET (toggle inverted operation)
* send from 2x pre-recorded memory banks of 100 characters each
* 20-second tune-up constant tone
* supports Iambic-A, Iambic-B and Ultimatic modes
* random callsign trainer
* automatic Beacon mode
The ATtiny microcontroller runs internally on 8MHz, but has the CLKDIV8 flag set, which makes the program effectively run at 1MHz. These clock settings are factory default for a newly-purchased (empty) ATtiny85 chip so you don't need to set any additional Fuses when programming the code into the microcontroller.
===Version 1===
Initially I wanted to make the keyer on a small board with just through-hole components.
[[File:0126-iambic-keyer-pcb-built side.jpg|none|thumb|300px|Iambic Keyer built and ready to go]]
[[File:0126-iambic-keyer-oshpark.jpg]]
Ready to order from OSH Park: https://oshpark.com/shared_projects/EWy79eAF
Parts list:
* R1, R2: 10k (1/4W)
* C1: 100nF (MKT)
* C2, C3, C4: 10nF (MKT)
* U1: ATtiny45 or ATtiny85 (pre-programmed, internal oscillator @ 1MHz)
* U2: 78L05
* Q1: 2N7000
* header pins, .1" pitch (optional)
Gerbers: [[File:0126 Iambic Keyer gerbers.zip]]
Arduino Source code: [[File:0126 iambic keyer.zip]]
* Note: although the source code is in the Arduino .ino format, it is targeted for the ATtiny microcontroller. In order to program this code, you need to turn your Arduino (e.g. Dueamilanove or Uno) into an In-Circuit Serial Programmer (link: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829).
Schematic: [[File:DipTrace Schematic - 0126 iambic keyer.png|none|thumb|300px|Iambic keyer schematic]]
===Version 2===
Once I sorted out some minor issues with the code and was confident that this was indeed a neat little project, I decided to try and fit it in a small plastic enclosure. The enclosure I chose had small internal rails, between which a circuit board can be held. I was hoping that the enclosure would be big enough inside to also hold a 9V battery, but this turned out to be a bit of a challenge. What I ended up doing was to make a pair of tabs at one end of the circuit board so it could hold the 9V battery in place. The result is what you see below. When the board is received, the end-tabs need to be snapped off and filed flush for a snug fit in the enclosure. The tabs are then soldered at 90 degree angles. Make sure to leave enough space around the battery for some additional insulation tape as the metal body of a 9V battery is NOT ground(!). I tried various small 9V snap-on tabs, but even the smallest ones are still too thick to fit everything inside the box. Therefore the only way this will work is to solder the power leads directly to the battery. Not ideal, but this way it all just fits.
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-front.jpg|none|thumb|300px|Iambic keyer fully assembled - front view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer enclosure-back.jpg|none|thumb|300px|Iambic keyer fully assembled - back view]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-inside-enclosure.jpg|none|thumb|300px|Iambic keyer - inside the enclosure]]</li>
</ul></div>
<div><ul>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom.jpg|none|thumb|300px|PCB 0126 with the tabs still attached]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 bottom-with-tabs.jpg|none|thumb|300px|PCB 0126 with tabs soldered on the back of the board]]</li>
<li style="display: inline-block;">[[File:0126-iambic-keyer-pcb v0.2 top.jpg|none|thumb|300px|Iambic keyer PCB top view]]</li>
</ul></div>
(new schematic, not yet posted)
(gerber files, not yet posted)
(improved source code, not yet posted)
BOM
<code>
11x male header pins 0.50 eBay
6x female header pins receptacle 0.50 eBay
1x DIP8 ATTiny85 2.00 eBay
2x 1206 10nF cer cap 0.02 669-8410 RS
1x 1206 100nF cer cap 0.02 669-8408 RS
2x 1206 1uF cer cap 0.02 669-8414 RS
2x 1206 10k res 0.01 117-391 RS
1x 1206 BSS138 N-Ch FET 0.24 671-0324 RS
1x SOT223-3 MCP1703-502E/DB LDO 0.91 669-4890 RS
1x Piezo transducer 3500Hz 0.78 457-011 RS
1x DIP8 IC Socket 0.38 PI6500 Jaycar
1x 1m 16-Way IDC ribbon cable 1.85 WM4502 Jaycar
1x spdt sub-miniature toggle switch 2.95 ST0300 Jaycar
1x small black SPST N/O momentary 3.95 SP0700 Jaycar
1x DC Power 2.5mm Bulkhead connector 2.95 PS0524 Jaycar
1x enclosure 130x68x44mm 3.95 HB6013 Jaycar
2x 3.5mm stereo chassis socket 1.35 PS0132 Jaycar
1x Circuit Board 0126 Iambic Keyer 6.70 OSH Park
------
$29.08 (AUD) (2017 prices)
</code>
===Sidetone===
The keyer uses an internal oscillator for generating a sidetone. It is therefore recommended to use a piezo transducer in the design (do not use a buzzer that produces a tone when a dc voltage is applied). The keyer sidetone is useful for generating beeps when interacting with the keyer menu but it can also serve as audible feedback when the radio you're working with does not produce any tones when triggering the PTT line in CW mode. Enabling or disabling the keyer sidetone, as well as changing the pitch, can be set from the keyer menu.
Here is a typical Morse paddle that can be used with this keyer.
[[File:Ame dcp paddle.jpg|none|thumb|200px|AME DCP Paddle]]
http://americanmorse.com/dcp.htm
Getting started.
So you've soldered all the components, connected all the hardware and it's mounted in a box. Now what do you do?
The keyer has a few modes of operation. It can only be in one of these modes:
* iambic keyer mode
* Menu mode
* Callsign training mode
When the device is first powered up it will output '73' (on the internal speaker only) and start in iambic keyer mode, ready for paddle input.
If a paddle is connected you can send dits and dahs by tapping the left or the right paddle. In the menu you can configure common options such as:
* swapping the left and right paddle
* setting the internal speaker on or off during iambic keyer mode
* enabling or disabling the switched output (to key the radio)
* swap the switched output (key to GND or key to 5V)
* the tone of the CW from the internal speaker
* the speed of the CW
To enter the menu, press the command button once. It will send '?' ( . . - - . . ) to confirm it is in menu mode. If no paddle activity is sensed within 5 seconds it will time out, send 'SK' ( . . . - . - ) and return back into Iambic keyer mode.
While in menu mode, use the paddle to key in the letter of a corresponding menu option to activate it. The full list of options is shown below.
The following list of menu options is available:
<pre>
@section usage Usage
After reset in default mode, the keyer operates as regular IAMBIC keyer in IAMBIC A at 15 WPM
(words per minute = 60 CPM), with 700 Hz side tone. By default, the transmitter keying signal is
positive.
@subsection speed Speed Change
Speed can be changed by pressing and holding the command key while operating the DIT and DAH paddles.
DIT reduces speed while DAH increases speed. The keyer plays an alternating sequence of dit and dah while
changing speed without keying the transmitter.
@subsection cmode Command mode
Pressing the command button without changing speed will switch the keyer into command mode. This will be
confirmed with the '?' character. Another press of the same button takes the keyer back into regular
keyer mode and will be confirmed by the 'SK' prosign.
During command mode the transceiver is never keyed and sidetone is always activated. Further
functions can be accessed by keying one-letter commands as listed below.
@subsubsection Version V - Version
The keyer responds with the current keyer software version number
@subsubsection pitch P - Pitch
Allows modifying the sidetone pitch to a higher or lower level. A sequence of dits will be played
and the pitch can be modified with the dit and dah paddles. If no paddle is touched for 5 seconds,
the acknowledgment signal 'R' is sounded and the mode terminates, leaving the user in command mode.
@subsubsection reset R - Reset
All settings are returned to their default values except for the stored messages in the message buffers.
Restored settings include speed and pitch, Paddle Swap, TX level inversion, sidetone and TX keyer settings.
@subsubsection tune U - Tune mode
The transceiver is keyed for a duration of 20 seconds for tuning purposes. Tuning mode is aborted once either
DIT or DAH paddles are touched or the control key is pressed.
@subsubsection ia A - IAMBIC A
Keyer sets IAMBIC A as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ib B - IAMBIC B
Keyer sets IAMBIC B as permanent keying mode. An 'R' is sounded to acknowledge the request.
@subsubsection ultimatic L - Ultimatic
Sets the keyer into ULTIMATIC mode. In Ultimatic mode always the last paddle to be touched is repeated indefinitely
when paddles are squeezed
@subsubsection dahprio D - DAH priority mode. In squeezed state a sequence of DAHs is sent.
Some of the first generation keyers exhibited this behaviour so the chip can simulate that
@subsubsection swap X - Paddle swapping
DIT and DAH paddles are swapped. An 'R' is sounded to acknowledge the request.
@subsubsection side S - Sidetone toggle
The built-in sidetone generator setting is toggled (ON -> OFF or OFF -> ON). NOTE: This setting is only of relevance
for regular keying mode. Sidetone is always on in command mode. An 'R' is sounded to acknowledge the request.
@subsubsection txtog K - TX Keying toggle
Toggles the setting of the TX keyer output. In default state the keyer switches the output line when it is in keyer mode.
Toggling this setting enables or disables that function. NOTE: Keying is always off in Command mode. An 'R' is sounded to
acknowledge the request.
@subsubsection farnsworth Z - Set Farnsworth pause
Allows setting of an extended inter-character pause in all sending modes, which makes fast keying easier to understand.
Note that this of course only influences RECEPTION, not TRANSMISSION. If you desire farnsworth mode in transmission, please
manually pause during characters.
@subsubsection lvtog I - TX level inverter toggle
This function toggles wether the "active" level on the keyer output is VCC or GND. The default is VCC. This setting
is dependent on the attached keying circuit. An 'R' is sounded to acknowledge the request.
@subsubsection query W - Query current WPM speed
Keyer responds with current keying speed in WPM.
@subsubsection msgrec 1 and 2 - Record internal messages 1 or 2
The keyer immediately responds with "1" or "2" after which a message up to 100 characters can be keyed at current WPM speed.
After 5 seconds of inactivity the message is played back once and then stored in EEPROM. Choosing "1" or "2" but not keying
a new message deletes the chosen message buffer content.
@subsubsection msgplay E and T - Play back internal messages 1 or 2
The stored messages 1 or 2 are played back with keying enabled (if configured). A press of the command key immediately
returns the keyer to keyer mode so a QSO can be started.
@subsubsection beacon N - Automatic Beacon
The keyer responds with 'N' after which a number between 0 and 9999 can be keyed. After a 5 second timeout the keyer
responds by repeating the number and 'R'. Once the keyer returns to keyer mode, the content of message buffer 2 is
repeated in intervals of n seconds. The setting is preserved in EEPROM so the chip can be used as a fox hunt keyer.
Returning to command mode and entering an interval of 0 (or none at all) stops beacon mode.
@subsubsection lock 0 - Lock configuration
The 0 command locks or unlocks the main configuration items but not speed, pitch and playback functions.
@subsubsection trainer C - Callsign trainer
The keyer plays a generated callsign (sidetone only) and the user must repeat it. If it was repeated correctly, 'R' is
played and the next callsign is given. If a mistake was sensed, the error prosign (8 dits) is sounded and
the current callsign is repeated again for the user to try once more. If nothing is keyed for 10 seconds, the keyer returns
to command mode.
</pre>
edbc0dce0dfd3714ea08be3959cdb34943690cd3
RealEstate
0
172
3607
618
2022-08-28T22:10:24Z
Admin
1
wikitext
text/x-wiki
Real Estate links:
* http://www.mortgagechoice.com.au/calculators/home-loan-repayments-calculator.aspx Loan Repayment Calculator
[[tips]]
55500eeef36927cf6df8f41157b63d3ef363fa82
Tips
0
876
3608
2022-08-28T22:15:53Z
Admin
1
Created page with "Here are some tips that I found useful to bring me in a position to buy my first home. The property * look for a property with as much land as possible * get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order. Personal development * Your finances"
wikitext
text/x-wiki
Here are some tips that I found useful to bring me in a position to buy my first home.
The property
* look for a property with as much land as possible
* get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order.
Personal development
*
Your finances
a4c69fc0bb635caaf2a0869403463a06cfe511de
3609
3608
2022-08-28T22:19:00Z
Admin
1
wikitext
text/x-wiki
Here are some tips that I found useful to bring me in a position to buy my first home.
The property
* look for a property with as much land as possible
* get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order.
* flat block of land
* close to public transport
* close to shopping centres
* close to schools
Personal development
* have a can-do attitude
* believe you will succeed
* get organised
* listen to relevant podcasts
Your finances
* keep track of all your finances
* save 10% of what you earn
* live within your means
22a2c9d8482555dd021c4d6ad0921c2902337fc1
3610
3609
2022-08-28T22:19:46Z
Admin
1
wikitext
text/x-wiki
Here are some tips that I found useful to bring me in a position to buy my first home.
The property
* look for a property with as much land as possible
* get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order.
* flat block of land
* close to public transport
* close to shopping centres
* close to schools
The area
* research suburb growth
* find out what the big players are doing
Personal development
* have a can-do attitude
* believe you will succeed
* get organised
* listen to relevant podcasts
Your finances
* keep track of all your finances
* save 10% of what you earn
* live within your means
225c208594cfe2c9d12a83a468039721ef1fe937
3611
3610
2022-08-28T22:21:20Z
Admin
1
wikitext
text/x-wiki
Here are some tips that I found useful to bring me in a position to buy my first home.
The property
* look for a property with as much land as possible
* get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order.
* flat block of land
* close to public transport
* close to shopping centres
* close to schools
The area
* research suburb growth
* find out what the big players are doing
Personal development
* have a can-do attitude
* believe you will succeed
* get organised
* listen to relevant podcasts
Your finances
* keep track of all your finances
* save 10% of what you earn
* live within your means
f27d21e0894320cfded06217c4d6019ca6693aed
3612
3611
2022-08-28T22:38:29Z
Admin
1
wikitext
text/x-wiki
Here are some tips that I found useful to bring me in a position to buy my first home.
The property
* look for a property with as much land as possible
* get a freestanding house, or a duplex, or a townhouse, or an appartement. In that order.
* flat block of land
* close to public transport
* close to shopping centres
* close to schools
* get the worst house in the best street
The area
* research suburb growth
* buy close to where home big improvement stores are built
* buy at or under the median price
Personal development
* have a can-do attitude
* believe you will succeed
* get organised
* listen to relevant podcasts
Finances
* keep track of all your finances
* save 10% of what you earn to build up a deposit
* live within your means
* consider renting our rooms for your first purchase
d8dee7a8440b3dcc78368789bd89d3730056f02c
Main Page
0
1
3613
3511
2022-09-29T23:06:24Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
Click here for the KiwiSDR waterfall page: https://www.marcelpost.com:8073
[[File:Kiwisdr-waterfall.jpg|left|link=https://www.marcelpost.com:8073]]
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
89b3526382a7938b137dccb21ef30249c73b3a15
3614
3613
2022-10-02T09:23:18Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
Click here for the KiwiSDR waterfall page: http://www.marcelpost.com:8073
[[File:Kiwisdr-waterfall.jpg|left|link=http://www.marcelpost.com:8073]]
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
b3a6341d6a15482cfae1519444d750cf344fe7ce
3617
3614
2023-07-29T02:17:09Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around October 2023.
[[File:Kiwisdr-waterfall.jpg|left|]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
0e3039fa6c4fdf551dc647287263309c027ad5b7
3618
3617
2023-07-29T02:17:54Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around October 2023.
[File:Kiwisdr-waterfall.jpg|left]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
0ea0a84dd08b461996def45d261d5d882c5dcc58
3619
3618
2023-07-29T02:18:04Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around October 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
8473608ab6c770e2f1e2b9ee88b9afe317a39fc8
3620
3619
2023-07-29T02:18:21Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around October 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
4f1b7096e649d7d1a9f26e455bfefdb972a063af
3621
3620
2023-11-13T09:28:29Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Free-julian.jpeg|right|link=File:Free-julian.jpeg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around December 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
1d5ae89c97a4b4991276d020f295d9a4d061ac22
File:18650-T85-telemetry.jpg
6
877
3615
2023-03-23T23:11:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Mcu 0060-Voltage-data-logger
0
92
3622
3117
2023-11-19T02:03:16Z
Admin
1
wikitext
text/x-wiki
This project is outdated and now replaced by this project:
https://www.marcelpost.com/wiki/index.php/Mcu_0084-voltage-datalogger
3f874d30366ae390d0c0bb8a276208da1e667358
3623
3622
2023-11-19T02:04:03Z
Admin
1
wikitext
text/x-wiki
This project is outdated and now replaced by this project:
https://www.marcelpost.com/mediawiki/index.php/Mcu_0084-voltage-datalogger
28801a21a6dd93731ea5221d3a688e587b09df6e
3624
3623
2023-11-20T09:59:56Z
Admin
1
wikitext
text/x-wiki
This project is outdated and now replaced by this project:
https://www.marcelpost.com/wiki/index.php/Mcu_0084-voltage-datalogger
3f874d30366ae390d0c0bb8a276208da1e667358
Blaupunkt520 repair
0
812
3625
3322
2023-12-01T06:26:28Z
Admin
1
wikitext
text/x-wiki
A little success story of a car radio repair gone right.
A few weeks ago my girlfriend's car radio stopped working. The car is a Holden Astra model TS from 2001 released for the Australian market. On the (UK-based) 'Astra Owners Website' they also refer to this model as either a Vauxhall Astra Fourth Generation (or Mk 4) or Opel Astra G.
[[File:Astra-TS-CD.jpg]]
Funnily enough, there are even three pages on Wikipedia, each for a particular market:
* https://en.wikipedia.org/wiki/Holden_Astra
* https://en.wikipedia.org/wiki/Vauxhall_Astra
* https://en.wikipedia.org/wiki/Opel_Astra
The car radio is a Blaupunkt 520. It's a smart-ish radio in that it communicates with an external display higher up in the centre console and shows things like radio station, volume, CD track etc..
[[File:Blaupunkt520 repair0.jpg]]
So at one point a few weeks ago the output volume suddenly started dropping. I was listening to some music on CD and the volume coming out of the speakers dropped to almost nothing over a period of maybe 10 seconds. I tried compensating by turning the volume up but it really was getting quieter and quieter. I switched on the FM radio but it was also very very quiet; almost no output volume. I switched off the radio and drove home.
This couldn't be a fuse or so because the radio and all the controls still worked; it was just very very quiet. Since the symptoms were the same when either listening to CD or radio I assumed that the fault was in the final output power amplifier.
Since I didn't really wanted to open up the radio and swap out these chips I thought it would be simpler to just look around for a second-hand Blaupunkt 520 radio. Someone on eBay had one on sale for $20 ex shipping. Unfortunately he didn't have the security code.
The security code is important because it locks down the radio if the battery power is removed. I knew our radio's code but that didn't help for this other radio as a unique code is programmed inside each radio. Change the radio and you'll need a new code. There are usually ways to recover (or maybe reset) the code through the official car dealership, e.g. in case you've lost your code or bought a car without knowing the code from the previous owner.
I decided to take the risk and buy the radio on eBay in the hopes of being able to reset it through a local Holden dealer. My girlfriend is the first owner of her Astra and has all the official paperwork to prove so. I thought it would be a (perhaps somewhat costly) breeze to recover the replacement radio's code.
The radio from eBay arrived shortly after the purchase and we began inquiring with several Holden dealers in the area to get an idea of what it would cost to have the radio code recovered. I must say this was a very unsatisfying experience. The feedback from the local dealers can be summarised as a mix of hostility, unhelpfulness, rudeness and sheer incompetence. Some seemed to insinuate that we had a stolen radio, others flat-out refused to help and some gave us the idea that our problem wasn't worth their time even though we were well prepared to pay for the recovery service.
The next step was to look for an online radio-code recovery service. Yes they exist, but we weren't successful with them either. Websites that offer these services ask for a couple of details and then (if all goes well) instantly produce a code that you can use straight away to unlock your radio. The website I found asked for the Blaupunkt 520's serial number and part number. Well, the serial number was printed on a sticker, but the part number was missing. I looked everywhere, even inside the radio, but was not able to find the part number. I figured that probably any website that offers these instant-code-generator services operates in the same way and not having a critical piece of information will probably mean that any other code generating website would also not be able to help.
After calling another Holden dealer I finally got some good information. In order to recover the radio code they would also need the VIN (chassis number) of the car that the radio originally came out of. I asked the eBay seller but he said he was unable to recover this information.
Hmm... what to do.
Since I already had the radio open at this stage I noticed the two final amplifier ICs.
(Grey and black ICs that are backed up against the two copper heat sinks)
[[File:Blaupunkt520 repair1.jpg]]
Standing up vertically, on the right side is the AM and FM radio module, but apart from that there was no easy swapping of modules that could help me repair the original radio with the one I just bought.
The Final Power Amplifier is the component in the radio that amplifies the (relatively weak) audio signals from the AM and FM radio or CD player and drives the loudspeakers. It was my guess to think that the fault was in these chips as the radio controls all worked; there just wasn't any audio out.
Investigating the part numbers on these chips it was clear that these were two identical chips, the TDA7375A. I recognised the 'ST' manufacturer logo and had a look on the ST MicroElectronics website to find the component. They now sell the TDA7375V and TDA7375AV, but not the plain 'A' series anymore. The datasheet for the 'AV' product did reveal that it is indeed a 'class AB car radio amplifier able to work either in dual bridge or quad single ended configuration.' (see here for product website on the ST website: https://www.st.com/content/st_com/en/products/automotive-infotainment-and-telematics/automotive-audio-power-amplifiers/automotive-class-ab-audio-power-amplifiers/tda7375av.html)
They are able to drive about 35W into a speaker and since there are two I think that it's 35W for the left and 35W for the right audio channel. A quick search on Mouser, a big online electronics parts supplier, showed that these chips retail for about $8 a piece.
At least I now knew that these were indeed the chips responsible for the final output Power Amplifiers and that the 'easiest' fix was to swap them over from the eBay radio (assuming that the PA chips in the Ebay radio were still good). I could have bought two new chips from Mouser, but I wasn't 100 per cent sure that the problem was indeed these chips. The most cost-effective way was just to salvage the chips from the eBay radio. This also meant that I didn't have to chase up radio codes as all I was going to do was replace the amplifier chips.
Let the (un)soldering begin..
Using a 40W soldering iron, a tin-sucker and a lot of patience I am able to take out the tin surrounding the pins one by one..
[[File:Blaupunkt520 repair2.jpg]]
..until all the pins are freed and I'm able to wiggle out the first chip.
(bottom view)
[[File:Blaupunkt520 repair3.jpg]]
(top view)
[[File:Blaupunkt520 repair4.jpg]]
Rinse and repeat until both chips from both radios are unsoldered.
[[File:Blaupunkt520 repair5.jpg]]
Finally! Both chips are unsoldered and ready to be swapped.
[[File:Blaupunkt520 repair6.jpg]]
The holes in the circuit board were clean enough for the replacement chips and after re-soldering them in place I began assembling the radio back together again.
I slotted the radio back into the car dashboard and the moment of truth came..
As expected, the clock-display in the top console asked for 'RADIO CODE - - - -'. I entered the radio code and it was accepted. So far so good.
I then turned on the radio to an FM station and... IT PLAYED SOUNDS THROUGH THE SPEAKERS!! YAAAY!!!
This is a very good outcome.
Apart from the frustration of talking to Holden dealers and the realisation that Blaupunkt doesn't make it easy for their radios to be re-used (even in identical cars!), it took me a few hours to do the soldering.
4ab16b3beb525c8ccc1132a78ee4b0a6c6c00dac
Docs and Howto's
0
51
3626
3296
2024-02-04T08:42:05Z
Admin
1
wikitext
text/x-wiki
Howto's, information, guides, and other information that I wanted to have online for easy access.
Docs:
Something on [[Cryptography]]
Examples for [[Gnuplot]]
[[Blaupunkt520_repair]]
[[MorseRunner]]
My Howto's:
[[Transfer_contacts_between_iphone_and_android]]
[[failsafe on turnigy evolution]]
fc81f60d9d38b512e694070ddc14e0cca6876360
MorseRunner
0
878
3627
2024-02-04T08:51:47Z
Admin
1
Created page with "An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner. After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off. The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background..."
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
c1199b3ca2366f6f78983a7818019f4333dc6bcf
3628
3627
2024-02-04T08:54:28Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
7663c04cdd5cd0454f195064d6e72dddd843cbbd
3629
3628
2024-02-04T09:03:06Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
f016b56e6c881b51c9b0e7919e8e51502b757e14
3630
3629
2024-02-04T09:09:36Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
When a contact sends their call, simply enter it in the 'Call' field and press ENTER. The software will then send:
<THEIRCALL> 599 <NR>
where <NR> is your sequential contact number (001, 002, etc..)
After this, the contact can respond in several ways
- R [.-.] acknowledged (roger) of your numbers, after which they'll send their SNR and NR
- ? [..--..] not heard correctly, please send again. Press F4 (My) to re-send my number again
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
TIPS:
- don't wait too long after the contact's call to send your
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
266d06e274bc8d3987ca1bf1d7d5656739812973
3631
3630
2024-02-04T09:20:17Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
When a contact sends their call, it is usually in one of these formats:
<THEIRCALL>
DE <THEIRCALL>
<THEIRCALL> <THEIRCALL>
simply enter it in the 'Call' field and press ENTER. The software will then send:
<THEIRCALL> 599 <NR>
where <NR> is your sequential contact number (001, 002, etc..)
After this, the contact can respond in several ways
- R <THEIRCALL> acknowledged (roger) of your numbers, after which they'll send their SNR and NR
- ? [..--..] not heard correctly, please send again. Press F2 to re-send my number again
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
TIPS:
- don't wait too long after the contact's call to send your
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
b1c32da9aa411fb568e381c197a7ba1b6bb76a09
3632
3631
2024-02-04T09:28:03Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
When a contact sends their call, it is usually in one of these formats:
<THEIRCALL>
DE <THEIRCALL>
<THEIRCALL> <THEIRCALL>
simply enter it in the 'Call' field and press ENTER. The software will then send:
<THEIRCALL> 599 <NR>
where <NR> is your sequential contact number (001, 002, etc..)
After this, the contact can respond in several ways
- R <THEIRCALL> acknowledged (roger) of your numbers, after which they'll send their SNR and NR
- ? [..--..] not heard correctly, please send again. Press F2 to re-send my number again
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
If you get their contest serial number wrong it will show as NR in the list of contacts.
TIPS:
- don't wait too long after the contact's call to send your
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
8a9cf40534965ddcc76b41a9dc8129c0792e9bcb
3633
3632
2024-02-04T09:29:21Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
When a contact sends their call, it is usually in one of these formats:
<THEIRCALL>
DE <THEIRCALL>
<THEIRCALL> <THEIRCALL>
simply enter it in the 'Call' field and press ENTER. The software will then send:
<THEIRCALL> 599 <NR>
where <NR> is your sequential contact number (001, 002, etc..)
After this, the contact can respond in several ways
- R <THEIRCALL> acknowledged (roger) of your numbers, after which they'll send their SNR and NR
- ? [..--..] not heard correctly, please send again. Press F2 to re-send my number again
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
If you get their contest serial number wrong it will show as NR in the list of contacts.
TIPS:
- don't wait too long after the contact's call to send your
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
https://www.dxatlas.com/MorseRunner/
https://github.com/VE3NEA/MorseRunner
e656ad72530ea0797914e490aaf128cccf1f5329
3634
3633
2024-02-04T09:30:00Z
Admin
1
wikitext
text/x-wiki
An excellent morse-code CW Contest Simulator is a program created by Alex Shovkoplyas (VE3NEA) called MorseRunner.
After you set your own callsign and the speed at which you want to send CW you're set to go. I normally set a duration for 15 minutes and then click on the green Run button to kick it off.
The software is surprisingly good at realistically simulating various types of contacts; some slow, some fast, sometimes fading, with crackles and pops in the background.
Below are a few hints to help me better understand how the program works.
F1 - sends your callsign to initiate making new contacts
The outgoing format is always CQ <YOURCALL> TEST
When a contact sends their call, it is usually in one of these formats:
<THEIRCALL>
DE <THEIRCALL>
<THEIRCALL> <THEIRCALL>
simply enter it in the 'Call' field and press ENTER. The software will then send:
<THEIRCALL> 599 <NR>
where <NR> is your sequential contact number (001, 002, etc..)
After this, the contact can respond in several ways
- R <THEIRCALL> acknowledged (roger) of your numbers, after which they'll send their SNR and NR
- ? [..--..] not heard correctly, please send again. Press F2 to re-send my number again
Incoming contact formats:
<THEIRCALL> 599 <NR>
where <NR> can be:
- normal digits (e.g. 001)
- replacing a zero with a T (e.g. TT4)
If you get their contest serial number wrong it will show as NR in the list of contacts.
TIPS:
- don't wait too long after the contact's call to send your
Sometimes contacts will prefix their callsign with 'DE', so make sure to listen carefully
Resources:
https://www.dxatlas.com/MorseRunner/
https://github.com/VE3NEA/MorseRunner
1b9a4c2028c4c4a5df0f5f7657de2e91fb041bd2
Linux info
0
25
3635
3391
2024-02-09T01:14:18Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
a9d92f5aa6bde5a55022b5e7c6dfbf81e20171c7
3637
3635
2024-02-09T01:15:51Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[systemd-tips]]
f6dd49b75379d42a48fa79d19ab196ed6ba75b25
3641
3637
2024-02-09T01:18:13Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[systemd-tips]]
[[vnc]]
4a141bd7afe565b02cc59295ea6a35f98f5b83cc
3643
3641
2024-02-09T01:20:12Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[systemd-tips]]
[[vnc]]
[[git]]
76679637cd65b2f53b9177469cd1cff21393fa81
Vim-config
0
879
3636
2024-02-09T01:15:00Z
Admin
1
Created page with " useful entries in ~/.vimrc <pre> " --- disable syntax highlighting syntax off " --- open file at last edit position autocmd BufReadPost * \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' \ | exe "normal! g`\"" \ | endif " --- disable bell and screen flickering on escape --- set visualbell set t_vb= " -- allow mouse copy and paste -- set mouse=r " --- set tabstops to 4 spaces and set shiftwidth (ident amount) as..."
wikitext
text/x-wiki
useful entries in ~/.vimrc
<pre>
" --- disable syntax highlighting
syntax off
" --- open file at last edit position
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
" --- disable bell and screen flickering on escape ---
set visualbell
set t_vb=
" -- allow mouse copy and paste --
set mouse=r
" --- set tabstops to 4 spaces and set shiftwidth (ident amount) as 4 spaces to match tabstops ---
set ts=4 sw=4
" --- redefine tab as spaces ---
set expandtab
<pre>
553e26e9db738cd2c68d0e913fb5a39374e83d8e
Systemd-tips
0
880
3638
2024-02-09T01:17:14Z
Admin
1
Created page with " ==Enable /etc/rc.local=== <pre> --[example /etc.rc.local]-- #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0 --[end]-- systemctl daemon-reload systemctl start rc-local </pre>"
wikitext
text/x-wiki
==Enable /etc/rc.local===
<pre>
--[example /etc.rc.local]--
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
--[end]--
systemctl daemon-reload
systemctl start rc-local
</pre>
98c140cece2dcf78a36f3f64a3e016a7644f692f
3639
3638
2024-02-09T01:17:29Z
Admin
1
/* Enable /etc/rc.local= */
wikitext
text/x-wiki
==Enable /etc/rc.local===
<pre>
--[example /etc.rc.local]--
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
--[end]--
systemctl daemon-reload
systemctl start rc-local
</pre>
9113889898f2ffde863ad59a9270e3eff5f3d23d
3640
3639
2024-02-09T01:17:37Z
Admin
1
/* Enable /etc/rc.local= */
wikitext
text/x-wiki
===Enable /etc/rc.local===
<pre>
--[example /etc.rc.local]--
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
--[end]--
systemctl daemon-reload
systemctl start rc-local
</pre>
e53605fc80567e3d8dcb033afbfbab9b29a2f203
Vnc
0
881
3642
2024-02-09T01:18:57Z
Admin
1
Created page with "enabling a VNC server for remote desktop access using x11vnc <pre> apt-get install x11vnc </pre>"
wikitext
text/x-wiki
enabling a VNC server for remote desktop access
using x11vnc
<pre>
apt-get install x11vnc
</pre>
26e07fd48305f6e7be825b2ff6f8b4531a5bf2fd
Git
0
882
3644
2024-02-09T01:21:21Z
Admin
1
Created page with " ===creating a git repository from an existing project=== Assuming a project in ~/myproject containing all sorts of files and directories"
wikitext
text/x-wiki
===creating a git repository from an existing project===
Assuming a project in ~/myproject containing all sorts of files and directories
efafbfc058ccdbee1616c174be24bfd2138c606d
3645
3644
2024-02-09T01:34:22Z
Admin
1
wikitext
text/x-wiki
===creating a git repository from an existing project===
Assuming a project in ~/myproject containing all sorts of files and directories
<pre>
In the below example we use a local project called 'myproject' and upload it to the git server.
- if the existing local 'myproject' isn't initialised with git yet, then do so now:
$ git init
$ git add .
$ git commit -m "initial commit"
- clone 'myproject' from your local project into a new local directory called 'myproject.git'
$ git clone --bare myproject/ myproject.git
- upload the new repository to the remote server
$ scp -r myproject.git/ git@gitserver:/home/git
(this will create the folder /home/git/myproject.git on the server)
you may now clone the repository directly from the server into a local folder
$ cd somedir
$ git clone git@gitserver:myproject (the .git extension is not required)
lastly, you may now remove the original 'myproject' dir locally
</pre>
ac32a3326d0248e1a58e9816a17d8b0a07e967c5
3646
3645
2024-02-09T01:34:53Z
Admin
1
Replaced content with " [[Creating a git repository from an existing project]]"
wikitext
text/x-wiki
[[Creating a git repository from an existing project]]
fa4dcfa192e701043712a92e7e9bc0097b8ce841
3650
3646
2024-02-09T01:36:16Z
Admin
1
wikitext
text/x-wiki
[[Creating a git repository from an existing project]]
[[setting aliases]]
9ad72aa26ac168f0a1afe36be15be740a9db87b4
3652
3650
2024-02-09T01:40:48Z
Admin
1
wikitext
text/x-wiki
[[Creating a git repository from an existing project]]
[[setting aliases]]
[[bash git-prompt]]
c6602cc7233957d4ac3661c2a0bfb9761f7730b7
3656
3652
2024-02-09T01:44:28Z
Admin
1
wikitext
text/x-wiki
[[Creating a git repository from an existing project]]
[[setting aliases]]
[[bash git-prompt]]
[[branches]]
05b6568992c5698a2c7f65572c6974c3000d85a0
3682
3656
2024-02-13T22:43:51Z
Admin
1
wikitext
text/x-wiki
[[Creating a git repository from an existing project]]
[[setting aliases]]
[[setting global variables]]
[[bash git-prompt]]
[[branches]]
4d3f802013c844ffa7aa2455995fd3928cabfbfe
Creating a git repository from an existing project
0
883
3647
2024-02-09T01:34:59Z
Admin
1
Created page with " ===creating a git repository from an existing project=== Assuming a project in ~/myproject containing all sorts of files and directories <pre> In the below example we use a local project called 'myproject' and upload it to the git server. - if the existing local 'myproject' isn't initialised with git yet, then do so now: $ git init $ git add . $ git commit -m "initial commit" - clone 'myproject' from your local project into a new local di..."
wikitext
text/x-wiki
===creating a git repository from an existing project===
Assuming a project in ~/myproject containing all sorts of files and directories
<pre>
In the below example we use a local project called 'myproject' and upload it to the git server.
- if the existing local 'myproject' isn't initialised with git yet, then do so now:
$ git init
$ git add .
$ git commit -m "initial commit"
- clone 'myproject' from your local project into a new local directory called 'myproject.git'
$ git clone --bare myproject/ myproject.git
- upload the new repository to the remote server
$ scp -r myproject.git/ git@gitserver:/home/git
(this will create the folder /home/git/myproject.git on the server)
you may now clone the repository directly from the server into a local folder
$ cd somedir
$ git clone git@gitserver:myproject (the .git extension is not required)
lastly, you may now remove the original 'myproject' dir locally
</pre>
ac32a3326d0248e1a58e9816a17d8b0a07e967c5
3648
3647
2024-02-09T01:35:12Z
Admin
1
wikitext
text/x-wiki
Assuming a project in ~/myproject containing all sorts of files and directories
<pre>
In the below example we use a local project called 'myproject' and upload it to the git server.
- if the existing local 'myproject' isn't initialised with git yet, then do so now:
$ git init
$ git add .
$ git commit -m "initial commit"
- clone 'myproject' from your local project into a new local directory called 'myproject.git'
$ git clone --bare myproject/ myproject.git
- upload the new repository to the remote server
$ scp -r myproject.git/ git@gitserver:/home/git
(this will create the folder /home/git/myproject.git on the server)
you may now clone the repository directly from the server into a local folder
$ cd somedir
$ git clone git@gitserver:myproject (the .git extension is not required)
lastly, you may now remove the original 'myproject' dir locally
</pre>
d1aeb4db93dfe24b42919d96610808d8080eaf47
3649
3648
2024-02-09T01:35:34Z
Admin
1
wikitext
text/x-wiki
Assuming a project in ~/myproject containing all sorts of files and directories
<pre>
In the below example we use a local project called 'myproject' and upload it to the git server.
- if the existing local 'myproject' isn't initialised with git yet, then do so now:
$ git init
$ git add .
$ git commit -m "initial commit"
- clone 'myproject' from your local project into a new local directory called 'myproject.git'
$ git clone --bare myproject/ myproject.git
- upload the new repository to the remote server
$ scp -r myproject.git/ git@gitserver:/home/git
(this will create the folder /home/git/myproject.git on the server)
you may now clone the repository directly from the server into a local folder
$ cd somedir
$ git clone git@gitserver:myproject (the .git extension is not required)
lastly, you may now remove the original 'myproject' dir locally
</pre>
91e10e6bfe3ff31122c11513f2a2ec3018034462
Setting aliases
0
884
3651
2024-02-09T01:36:47Z
Admin
1
Created page with " <pre> creating an alias will probably save you a lot of time typing in long commands to create an alias either create one from the commandline or edit ~/.gitconfig on the commandline: git config --global alias.hist 'log --graph --all --oneline' NOTE: omitting '--global' will only set this alias for this repository editing the config file: --- [alias] hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --all --oneline --date=short --- or..."
wikitext
text/x-wiki
<pre>
creating an alias will probably save you a lot of time typing in long commands
to create an alias either create one from the commandline or edit ~/.gitconfig
on the commandline:
git config --global alias.hist 'log --graph --all --oneline'
NOTE: omitting '--global' will only set this alias for this repository
editing the config file:
---
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --all --oneline --date=short
---
or setting it from the command line:
git config --global alias.hist 'log --graph --all --oneline --pretty=format:"%h%x09%an%x09%ad%x09%s" --date=relative --abbrev-commit --decorate'
</pre>
1680e717d0ec61a038a31f8f74c17f034e069417
Bash git-prompt
0
885
3653
2024-02-09T01:42:27Z
Admin
1
Created page with " ---automatically change the prompt when you're in a git directory--- <pre> ---[~/.bashrc]--- # uncomment these 5 lines to automatically show a different PS1 prompt when you enter a git directory GIT_PS1_SHOWDIRTYSTATE=1 GIT_PS1_SHOWUNTRACKEDFILES=1 GIT_PS1_SHOWCOLORHINTS=true PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "' source /usr/lib/git-core/git-sh-prompt ---[]--- </pre>"
wikitext
text/x-wiki
---automatically change the prompt when you're in a git directory---
<pre>
---[~/.bashrc]---
# uncomment these 5 lines to automatically show a different PS1 prompt when you enter a git directory
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWCOLORHINTS=true
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
source /usr/lib/git-core/git-sh-prompt
---[]---
</pre>
1446835dc8a6b3685611cea0a8300501fe7008fa
3654
3653
2024-02-09T01:42:36Z
Admin
1
wikitext
text/x-wiki
automatically change the prompt when you're in a git directory
<pre>
---[~/.bashrc]---
# uncomment these 5 lines to automatically show a different PS1 prompt when you enter a git directory
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWCOLORHINTS=true
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
source /usr/lib/git-core/git-sh-prompt
---[]---
</pre>
751f4c596462b972b4953b1ea4d6bfcda9ea75bb
3655
3654
2024-02-09T01:42:56Z
Admin
1
wikitext
text/x-wiki
automatically change the prompt when you're in a git directory
<pre>
---[~/.bashrc]---
# uncomment these 5 lines to automatically show a different PS1 prompt when you enter a git directory
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWCOLORHINTS=true
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
source /usr/lib/git-core/git-sh-prompt
---[]---
</pre>
f8ace1057ec4ba7e2c9a286b0e93875093978631
Branches
0
886
3657
2024-02-09T01:45:29Z
Admin
1
Created page with " Git branch model:"
wikitext
text/x-wiki
Git branch model:
62c106d4d34a0124e21e1ed0e54ec1e74ca2e777
3658
3657
2024-02-09T01:47:10Z
Admin
1
wikitext
text/x-wiki
Git branch model:
- develop
- release
- master
50e783bdb9e5fb48e886cb17b8c864f26dac4ec8
3659
3658
2024-02-09T01:47:42Z
Admin
1
wikitext
text/x-wiki
Git branch model:
- develop
- feature
- release
- master
8acae263012e73395f8236651af73765d69dc845
3660
3659
2024-02-09T01:48:20Z
Admin
1
wikitext
text/x-wiki
Git branch model:
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
-
e5e6b235b6c7a808dfb90fd1502a9b52a930d7ce
3661
3660
2024-02-09T01:51:46Z
Admin
1
wikitext
text/x-wiki
Git branch model:
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resources: https://nvie.com/posts/a-successful-git-branching-model/
957c9a3d280a5d039abb4dbc3a55776d75638dac
3662
3661
2024-02-09T01:53:41Z
Admin
1
wikitext
text/x-wiki
Git branch model:
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
===1. create a new development branch from master===
ac04d22f45315b9993cece01c3ec69b859d694a7
3663
3662
2024-02-09T01:54:48Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
===1. create a new development branch from master===
<pre>
git branch develop
</pre>
===2. develop code===
c190fb5bae0b7ff7b53b1b41e9459983e22f04fd
3664
3663
2024-02-09T01:55:54Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
</pre>
==2. develop code==
<pre>
git checkout develop
<pre>
07e1cbb800df384ee97781b03ae761f1b2829964
3665
3664
2024-02-09T01:57:45Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
</pre>
==2. develop code==
<pre>
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
0cb864f729e5732362db9804eb2f03d6bc94eba6
3666
3665
2024-02-09T02:02:31Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
When developing code for a website, it may be wise to clone 'develop' into a new folder so as not to mess with the live/production 'master' environment
<pre>
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
09b0d224c8f9f7823b946059b17d067089255e90
3667
3666
2024-02-09T02:03:50Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
When developing code for a website, it may be wise to clone 'develop' into a new folder so as not to mess with the live/production 'master' environment
<pre>
mkdir myproject_develop
git clone git@gitserver:myproject
cd myproject
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
099648fdb35eecea229cac0b1f9c347356d90ace
3668
3667
2024-02-09T02:07:51Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
When developing code for a website, it may be wise to clone 'develop' into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
508c01ff7e9f5fa52cc99b8ba2b5545b2942ac32
3669
3668
2024-02-09T02:09:23Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone 'develop' into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
5be52f1c6769744b9edaf9323416b78996bd01f1
3670
3669
2024-02-09T02:09:57Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
8fd8e9e1040d1c3f716bc90b2874f4bc21509eca
3671
3670
2024-02-09T02:13:30Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
<pre>
git push
</pre>
078d8c41867c1923c88afee46f1ea98d70c048fc
3672
3671
2024-02-09T02:16:06Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
e90a1677a2cba7c32720607428605546d604c032
3673
3672
2024-02-09T02:34:17Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
52b088b39129d48eedefeade43bd39ac13895013
3674
3673
2024-02-09T02:40:09Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==3 Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate.
===3.1 Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
153dbbad6d10b19562cca66bb0211c8c7dda4a21
3675
3674
2024-02-09T02:47:39Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==3 Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===3.1 Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
0ff2f8777ffd25a6b716bb01d7fa772735b830a0
3676
3675
2024-02-09T02:57:27Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==3 Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===3.1 Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
===4 Stable===
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
f241ffae23322729396a1be082bb791b0a19288c
3677
3676
2024-02-09T02:57:52Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==1. Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==2. Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===2.1 set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
===2.1 commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===2.2 upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==3 Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===3.1 Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
==4 Stable==
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
f7886ba094fddb8407acebcca9aacb1f4060451a
3678
3677
2024-02-09T02:58:32Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===Set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
===Commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===Upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
==Stable==
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
dfd879dc60fb97dd915ceee5fc9fb745478a5608
3679
3678
2024-02-09T03:02:41Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===Set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
===Commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===Upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
==Stable==
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
If the 'release' branch is not yet known to the master branch, you can bring the local git up to date with what's on the server with the fetch command:
<pre>
git fetch
</pre>
e4fe0038b9592d4e171f120afabff80a022e69e6
3680
3679
2024-02-09T03:04:50Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===Set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
===Commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===Upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
==Stable==
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
If the 'release' branch is not yet known to the master branch, you can bring the local git up to date with what's on the server with the fetch command:
<pre>
git fetch
</pre>
Do not merge from release again until the version in release is ready to be called stable.
887631a8427a66994dc5f5d7512fa9e1980db546
3681
3680
2024-02-09T03:13:26Z
Admin
1
wikitext
text/x-wiki
===Git branch model===
- develop
- feature
- release
- master
Some basic rules for successful development using branches:
- master only gets updated from release
- develop is the main working branch
- develop is the source for new releases and features
- features can only go back into develop
resource: https://nvie.com/posts/a-successful-git-branching-model/
==Create a new development branch from master==
<pre>
git branch develop
git push --set-upstream origin develop
</pre>
==Develop code==
The develop branch is used for continuous code development and for working out conflicts when merging features that were on a separate branch. Only when the code is functional enough can it be considered as a release candidate (see Releases below).
===Set up develop environment===
When developing code for a website, it may be wise to clone the project into a new folder so as not to mess with the live/production 'master' environment
<pre>
git clone git@gitserver:myproject myproj_dev
cd myproj_dev
git checkout develop
</pre>
If the development branch and work environment has already been created, then simply checkout the code:
<pre>
cd myproject_dev
git checkout develop
</pre>
It may be useful to have a text file BUGS to let the developers know what work is still outstanding.
A text file CHANGES might be useful for the end-user to quickly see which new features or bug fixes have been incorporated.
===Commit code===
After you have developed your code and completed some logical component it is wise to commit the changes to the repository to make it easier for future code revision and debugging.
<pre>
git add .
git commit -m <commit message>
</pre>
===Upload commit to server===
When a remote repository is available it is good practice to also upload the latest commit so everyone else can get access to the most recent changes in code.
<pre>
git push
</pre>
==Releases==
When the code in the develop branch is functional and without major bugs it can be considered as a release candidate. Code in the release branch can still contain bugs, but it's intended to fix only the current bugs and not introduce new features. Once the release has been thoroughly tested and all known bugs are squashed it can be brought over to the main branch (see Stable branch below).
===Create Release branch===
If not done so already, create a new Release branch from develop.
<pre>
git branch release
git push --set-upstream origin release
</pre>
If the release branch has already been created, then simply checkout the release branch
<pre>
git checkout release
</pre>
Develop your code and commit as per normal.
It may be useful to create a text file RELEASE_VERSION to let the developers know what this release is for.
==Stable==
When finishing touches on the release branch have completed it's time to merge the code of the release branch into the master branch. The master branch is where only stable code releases should live. This keeps the branch clean from development work and commit comments.
<pre>
git checkout master
git pull origin master
git merge release
git push origin master
</pre>
If the 'release' branch is not yet known to the master branch, you can bring the local git up to date with what's on the server with the fetch command:
<pre>
git fetch
</pre>
Do not merge from release again until the version in release is ready to be called stable.
Next, go to the development environment and open the release branch and rev up the RELEASE_VERSION to what the next stable version number should be.
010fc96a51b1b5e3fa524f5c641a9c55519cc5db
Setting global variables
0
887
3683
2024-02-13T22:44:49Z
Admin
1
Created page with " ===Global User Name=== Get the current global user name: <pre> git config --global user.name "Mona Lisa" </pre> Set the current global user name: <pre> git config --global user.name "Mona Lisa" </pre>"
wikitext
text/x-wiki
===Global User Name===
Get the current global user name:
<pre>
git config --global user.name "Mona Lisa"
</pre>
Set the current global user name:
<pre>
git config --global user.name "Mona Lisa"
</pre>
2f5eb810b5244ffd8275856b5c98762ec7ec830b
3684
3683
2024-02-13T22:47:02Z
Admin
1
wikitext
text/x-wiki
===Global User Name===
Get the current global user name:
<pre>
git config --global user.name
</pre>
Set the current global user name:
<pre>
git config --global user.name "Joe Bloggs"
</pre>
===Global User Email address===
Get the current global user email address:
<pre>
git config --global user.email
</pre>
Set the current global user email address:
<pre>
git config --global user.name "joe@bloggs.com"
</pre>
22c612b14a06175726420f94c96acc08db70f022
Oddities
0
102
3685
2187
2024-02-24T07:06:34Z
Admin
1
wikitext
text/x-wiki
Mixed bag of things.
[[dust-storms-23-sep-2009]]
[[recipes]]
[[observations of the Australian culture by a Dutch immigrant]]
[[sliderules]]
[[what are the chances]]
b8ff5291d6e8bb0d9c8f0a8571aa348c4df8753b
What are the chances
0
888
3686
2024-02-24T07:07:04Z
Admin
1
Created page with "Infographic: What are the chances"
wikitext
text/x-wiki
Infographic: What are the chances
04908cbea48f93b0fa24340aeb11a85c71c84fbb
3688
3686
2024-02-24T07:11:42Z
Admin
1
wikitext
text/x-wiki
Infographic: What are the chances
[[File:What are the chances.jpg]]
e9b19892e35e24540b6ba42dc87f74040b274647
3689
3688
2024-02-24T07:11:58Z
Admin
1
wikitext
text/x-wiki
[[File:What are the chances.jpg]]
b630d47be7b79d5b2e63c295fbc268b25f078e44
File:What are the chances.jpg
6
889
3687
2024-02-24T07:11:12Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Linux info
0
25
3690
3643
2024-02-25T05:09:13Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
5e15f1893ead3efff66128e39768c8653682a183
3695
3690
2024-05-05T00:05:22Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[vim-cheatsheet]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
f6e0acfede30385752309a1825c10462ec699ac9
3704
3695
2024-06-22T02:37:46Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[vim-cheatsheet]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
[[archlinux]]
a0f3383672fa7650df6185b3d4b6dbde1897ac0e
3711
3704
2024-11-04T09:58:02Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[vim-cheatsheet]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
[[archlinux]]
[[wifi-hotspot]]
b655354f9f433ec9ffefa7bf74900158762ccd91
Bash-examples
0
890
3691
2024-02-25T05:10:10Z
Admin
1
Created page with "Collection of somewhat useful scrips I found that do things in bash. [[csv-iteration]]"
wikitext
text/x-wiki
Collection of somewhat useful scrips I found that do things in bash.
[[csv-iteration]]
6a2c4b66d5ecc5b4b329d103b73a8f6d84eeabdb
Csv-iteration
0
891
3692
2024-02-25T05:10:39Z
Admin
1
Created page with " <pre> #!/bin/sh # process a comma-separated list of values ITEMLIST="apples,pears" ITEMCOUNT=1 STATUS=0 while true do ARGCNT="$" ARGCNT=$ARGCNT$ITEMCOUNT ITEMNAME=`echo $ITEMLIST | awk -F \, "{print $ARGCNT}"` if test -z "$ITEMNAME" then ITEMCOUNT=$((ITEMCOUNT - 1)) break else # item name found, do something with it echo "Item $ITEMCOUNT = $ITEMNAME" ITEMCOUNT=$((ITEMCOUNT + 1)) fi done </pre>"
wikitext
text/x-wiki
<pre>
#!/bin/sh
# process a comma-separated list of values
ITEMLIST="apples,pears"
ITEMCOUNT=1
STATUS=0
while true
do
ARGCNT="$"
ARGCNT=$ARGCNT$ITEMCOUNT
ITEMNAME=`echo $ITEMLIST | awk -F \, "{print $ARGCNT}"`
if test -z "$ITEMNAME"
then
ITEMCOUNT=$((ITEMCOUNT - 1))
break
else
# item name found, do something with it
echo "Item $ITEMCOUNT = $ITEMNAME"
ITEMCOUNT=$((ITEMCOUNT + 1))
fi
done
</pre>
1ba7b408f92b9765c788f3648a1a87cdeb4fb103
3693
3692
2024-02-25T05:11:00Z
Admin
1
wikitext
text/x-wiki
<pre>
#!/bin/sh
# process a comma-separated list of values
ITEMLIST="apples,pears"
ITEMCOUNT=1
while true
do
ARGCNT="$"
ARGCNT=$ARGCNT$ITEMCOUNT
ITEMNAME=`echo $ITEMLIST | awk -F \, "{print $ARGCNT}"`
if test -z "$ITEMNAME"
then
ITEMCOUNT=$((ITEMCOUNT - 1))
break
else
# item name found, do something with it
echo "Item $ITEMCOUNT = $ITEMNAME"
ITEMCOUNT=$((ITEMCOUNT + 1))
fi
done
</pre>
87032e40ef1256e38c8777104c7766a000cfcead
3694
3693
2024-02-25T05:19:46Z
Admin
1
wikitext
text/x-wiki
<pre>
#!/bin/sh
# process a comma-separated list of values
ITEMLIST="apples,pears"
ITEMCOUNT=1
while true
do
ARGCNT="$"
ARGCNT=$ARGCNT$ITEMCOUNT
ITEMNAME=`echo $ITEMLIST | awk -F \, "{print $ARGCNT}"`
if test -z "$ITEMNAME"
then
ITEMCOUNT=$((ITEMCOUNT - 1))
break
else
# item name found, do something with it
echo "Item $ITEMCOUNT = $ITEMNAME"
fi
ITEMCOUNT=$((ITEMCOUNT + 1))
done
</pre>
54196cdb7efb7ee1cddd04c7f1520428788ff8a6
Vim-cheatsheet
0
892
3696
2024-05-05T00:08:01Z
Admin
1
Created page with "===Markers=== <pre> :ma set current position for mark A `a jump to position of mark A :marks show list of marks </pre>"
wikitext
text/x-wiki
===Markers===
<pre>
:ma set current position for mark A
`a jump to position of mark A
:marks show list of marks
</pre>
d5db63c958e7d116491a741fc97dec0671dcec4c
3697
3696
2024-05-05T00:10:40Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
Shift-G end
</pre>
===Markers===
<pre>
ma set current position for mark A
`a jump to position of mark A
:marks show list of marks
</pre>
340e83fd159d5522e3f358d2fbf52239a3440222
3698
3697
2024-05-05T00:12:02Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
`a jump to position of mark A
:marks show list of marks
</pre>
4cabcdd58228447ea2ee28020e1833a13983dfd0
3699
3698
2024-05-05T00:13:16Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
'a jump to position of mark A
:marks show list of marks
</pre>
89592ea505de9993386431ed825a5fead749509a
3700
3699
2024-05-05T00:52:17Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
'a jump to position of mark A
[' next mark
]' previous mark
:marks show list of marks
</pre>
09257f7ab0440e78a636c4d68f2ca64278e635db
3701
3700
2024-05-05T00:53:47Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
'a jump to position of mark A
[' previous mark
]' next mark
:marks show list of marks
</pre>
27c12f23db500ae5f1a5668c748603ebd2fe0cd4
3702
3701
2024-05-05T01:59:44Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
'a jump to position of mark A
[' previous mark
]' next mark
:marks show list of marks
</pre>
===Find and Replace===
<pre>
:%s/word1/word2/ once
:%s/word1/word2/g entire document
:%s/word1/word2/gc entire document, with confirmation
</pre>
a8a034d7e348f4db10b29902204858679d0e417f
3703
3702
2024-05-05T02:03:35Z
Admin
1
wikitext
text/x-wiki
===Cursor movement===
<pre>
gg home
G end
</pre>
===Markers===
<pre>
ma set current position for mark A
'a jump to position of mark A
[' previous mark
]' next mark
:marks show list of marks
</pre>
===Find and Replace===
<pre>
:%s/word1/word2/g entire document, all instances on a line
:%s/word1/word2/gc entire document, all instances on a line, with confirmation
:,$s/word1/word2/c staring from current line, first instance, with confirmation
</pre>
15a56e5833b3d895a891766ee9d53ff3d7d2b51d
Archlinux
0
893
3705
2024-06-22T02:38:30Z
Admin
1
Created page with "setup: <pre> arch-- partition disk -- fdisk /dev/sda mkfs.ext4 /dev/sda1 mkswap /dev/sda2 mount /dev/sda1 /mnt swapon /dev/sda2 -- install os -- pacstrap -K /mnt base linux linux-firmware -- update filesystem table -- genfstab -U /mnt >> /mnt/etc/fstab -- switch to new installation -- arch-chroot /mnt -- configure a few things -- /etc/hostname passwd pacman -S grub-bios grub-install /dev/sda grub-mkconfig -o /boot/grub/grub.cfg -- manually get ip address from dhcp..."
wikitext
text/x-wiki
setup:
<pre>
arch-- partition disk --
fdisk /dev/sda
mkfs.ext4 /dev/sda1
mkswap /dev/sda2
mount /dev/sda1 /mnt
swapon /dev/sda2
-- install os --
pacstrap -K /mnt base linux linux-firmware
-- update filesystem table --
genfstab -U /mnt >> /mnt/etc/fstab
-- switch to new installation --
arch-chroot /mnt
-- configure a few things --
/etc/hostname
passwd
pacman -S grub-bios
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
-- manually get ip address from dhcp server --
dhcpcd ens33
EFI setup
fdisk /dev/sda 'g' initialise as GPT
/dev/sda1 EFI System 300M
/dev/sda2 swap 500M
/dev/sda3 / rest
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda3
mkswap /dev/sda2
mount /dev/sda3 /mnt
swapon /dev/sda2
pacman -S grub efibootmgr dosfstools os-prober mtools
mkdir /boot/EFI
mount /dev/sda1 /boot/EFI
grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
grub-mkconfig -o /boot/grub/grub.cfg
https://www.tecmint.com/arch-linux-installation-and-configuration-guide/
https://wiki.archlinux.org/title/installation_guide
useful packages to install:
vim which net-tools dhcpcd iwd iwlwifi wpa_supplicant
</pre>
6cad1223ab9709063514ffe020188b188ae6206a
Observations of the Australian culture by a Dutch immigrant
0
201
3706
3092
2024-06-26T07:10:08Z
Admin
1
wikitext
text/x-wiki
In 2001 I immigrated from the Netherlands to Australia. Since then I have worked and lived in various places. During this time I noticed some interesting details of the Australian land and culture that were not be obvious at first. You may find these details useful when visiting Australia as a tourist.
This page further describes some of those details. Some if them are supposed to be funny, so have a chuckle! :-)
==Housing==
* Most rent is charged per week or per fortnight
* Many houses are not built with insulation in mind.
* Be sure to find single-glasing, gaps around most doors and no hallway as a wind-buffer.
* Most houses do not have central heating so a small electric heater or putting on an extra jumper are your options if a reverse-cycle air-conditioning system is not installed.
* Door handles are often knobs, making them unusable for people that have poor grip strentgh.
* Many mailboxes are too small to receive a straight A4 sheet mail pieces
==Working==
* Most salaries are paid weekly or fortnightly.
* Staff birthdays are usually ignored.
==Cities==
* Garbage is collected even on public holidays such as Christmas day and New Year's day.
* Street names are not unique in a city (e.g. in Newcastle, there is a George Street in Mayfield East, Wallsend, North Lambton, Tighes Hill and Highfields)
==Food==
* Meat pies is a common food available in most road cafe's. It's a meat-filled pastry mini-pie, to be eaten hot, and can be served as-is or with a mushy peas/mash potato/gravy dressing.
* Recycling of cans (glass, plastic or aluminium) and platic (bottle) crates is not available in most places. Only one state (South Australia) has implemented the system for empty bottles.
==Electrical==
* 240V AC @ 50Hz with a flush plate connection socket.
* In 2011 a bill was passed to prevent the sale of any incandescent light bulbs. Regardless whether these are better or worse for the environment, you will not be able to buy any traditional light bulbs.
* most household light sockets are B22d (bajonet) but you can still find E-27 (screw) fittings as well.
==Trains==
* Cheap fares on the regular CityRail lines. A weekday return ticket from Newcastle to Sydney (160km) is around $16 for an adult (2012 prices).
==Prices==
* Unleaded Regular Petrol costs about $1.45/l (premium $1.65, gas $.., diesel $..)
* The Australian dollar was 'above parity' with the USD for most of 2011 and is now around 99 USD-cents (May 2012).
==Electoral System===
In 2019 the Australian government held Federal Elections. The party called 'The Greens' received 10.4% of the votes from 14.2 million eligible voters (they received 1.48 million votes). There are 151 seats in the House of Representatives, so 10.4% of 151 is 15.7. You would think they received 15 or 16 seats, but guess what.. they only received 1. WHAT??? Yes, just one seat. To me, that is not democratic.
==Road==
* As per the British system, traffic keeps left.
* Despite many signs indicating 'keep left unless overtaking', most drivers keep driving in the middle or right lanes.
* Most Australians are never agressive or impatient until they drive a car.
* Periodic road-safety tests for rego renewal do not check for engine emissions.
==Pedestrians==
* as on the road, keep left when walking. You'll cause awkward situations and bump into people if you dont'.
==Language==
* Slang: pluggers (flip flops, thongs), howyergoing (not too well, "I felt a bit howyergoing"), nail (cigarette), damage beers (drink beer).
* Apart from the expected slang there are also some words that are used to 'culture up' some common day products: Medley (combination of various food products), Gourmet (special, in any form), rustic (rural), salsa (like Medley), Boutique (special)
ffaebf790f0cdc0954c4c26b684a1b9bff7b2847
3707
3706
2024-06-26T07:10:27Z
Admin
1
wikitext
text/x-wiki
In 2001 I immigrated from the Netherlands to Australia. Since then I have worked and lived in various places. During this time I noticed some interesting details of the Australian land and culture that were not be obvious at first. You may find these details useful when visiting Australia as a tourist.
This page further describes some of those details. Some if them are supposed to be funny, so have a chuckle! :-)
==Housing==
* Most rent is charged per week or per fortnight
* Many houses are not built with insulation in mind.
* Be sure to find single-glasing, gaps around most doors and no hallway as a wind-buffer.
* Most houses do not have central heating so a small electric heater or putting on an extra jumper are your options if a reverse-cycle air-conditioning system is not installed.
* Door handles are often knobs, making them unusable for people that have poor grip strentgh.
* Many mailboxes are too small to receive a straight A4 sheet mail pieces
==Working==
* Most salaries are paid weekly or fortnightly.
* Staff birthdays are usually ignored.
==Cities==
* Garbage is collected even on public holidays such as Christmas day and New Year's day.
* Street names are not unique in a city (e.g. in Newcastle, there is a George Street in Mayfield East, Wallsend, North Lambton, Tighes Hill and Highfields)
==Food==
* Meat pies is a common food available in most road cafe's. It's a meat-filled pastry mini-pie, to be eaten hot, and can be served as-is or with a mushy peas/mash potato/gravy dressing.
* Recycling of cans (glass, plastic or aluminium) and platic (bottle) crates is not available in most places. Only one state (South Australia) has implemented the system for empty bottles.
==Electrical==
* 240V AC @ 50Hz with a flush plate connection socket.
* In 2011 a bill was passed to prevent the sale of any incandescent light bulbs. Regardless whether these are better or worse for the environment, you will not be able to buy any traditional light bulbs.
* most household light sockets are B22d (bajonet) but you can still find E-27 (screw) fittings as well.
==Trains==
* Cheap fares on the regular CityRail lines. A weekday return ticket from Newcastle to Sydney (160km) is around $16 for an adult (2012 prices).
==Prices==
* Unleaded Regular Petrol costs about $1.45/l (premium $1.65, gas $.., diesel $..)
* The Australian dollar was 'above parity' with the USD for most of 2011 and is now around 99 USD-cents (May 2012).
==Electoral System==
In 2019 the Australian government held Federal Elections. The party called 'The Greens' received 10.4% of the votes from 14.2 million eligible voters (they received 1.48 million votes). There are 151 seats in the House of Representatives, so 10.4% of 151 is 15.7. You would think they received 15 or 16 seats, but guess what.. they only received 1. WHAT??? Yes, just one seat. To me, that is not democratic.
==Road==
* As per the British system, traffic keeps left.
* Despite many signs indicating 'keep left unless overtaking', most drivers keep driving in the middle or right lanes.
* Most Australians are never agressive or impatient until they drive a car.
* Periodic road-safety tests for rego renewal do not check for engine emissions.
==Pedestrians==
* as on the road, keep left when walking. You'll cause awkward situations and bump into people if you dont'.
==Language==
* Slang: pluggers (flip flops, thongs), howyergoing (not too well, "I felt a bit howyergoing"), nail (cigarette), damage beers (drink beer).
* Apart from the expected slang there are also some words that are used to 'culture up' some common day products: Medley (combination of various food products), Gourmet (special, in any form), rustic (rural), salsa (like Medley), Boutique (special)
df11c1753c392873e121b7e67f77fe12b4be8948
File:Julian-Free 2024-06-26.jpg
6
894
3708
2024-06-26T21:43:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Main Page
0
1
3709
3621
2024-06-26T21:44:04Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
[[File:Julian-Free 2024-06-26.jpg|right|link=File:Julian-Free 2024-06-26.jpg]]
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around December 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
0e3f7d9f481f12cda11e0b8cc50051ffc2d48616
3710
3709
2024-08-02T05:23:48Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around December 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
c63efc466a8217b382fb4a4cebc58854f37ae3b8
Wifi-hotspot
0
895
3712
2024-11-04T10:05:28Z
Admin
1
Created page with "experimental setup, use at your own risk! lots of random info here, so I have a central place to keep configs, tips, links, etc.. What's this about? The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using: * it took 11 minutes to finally settle if it couldn't detect an Internet connection * the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to..."
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq (*) but instead use NetworkManager
064b26c7ef66ccf8723f2f98ab1ace0aef7d75e9
3713
3712
2024-11-04T10:07:13Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq (*) but instead use NetworkManager
* you can safely uninstall
** NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
c009d876e9daa76281c559512fdafb0a1756a9a1
3714
3713
2024-11-04T10:12:00Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager
* You can safely uninstall hostapd, dhcpcd, dhclient
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
6fb4419e20077d2c7690dcf6d68a873fe14a2c6b
3715
3714
2024-11-04T10:25:51Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'type=hotspot', which really simplifies things, see example below
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
</pre>
8847ec7b569c7bee22298d0cb2d096e62415e6d5
3716
3715
2024-11-04T10:29:03Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'type=hotspot', which really simplifies things, see example below
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
</pre>
f4d2972eaf916b0a9753934d909ed8655b80ddb4
3717
3716
2024-11-04T10:32:23Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'type=hotspot', which really simplifies things, see example below
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
efb495eb5d67a3b3956b9ad3bd132c523dd7fddb
3718
3717
2024-11-04T10:38:58Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'type=hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
568ed9df60650b57589f68f721aace3d82acd211
3719
3718
2024-11-04T10:46:58Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
62f8cacadb1deb780b3b2837091841918fda3396
3720
3719
2024-11-04T10:48:50Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
TODO:
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
7f61e5c05c42ab629eb8361bf066c2d59ce53428
3721
3720
2024-11-04T10:52:19Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
TODO:
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
30909c64f0b25916c2d9d4635d239dbeb65ab7f1
3722
3721
2024-11-04T10:55:33Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
TODO:
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
6ceacfdbb8d69a143a4ac368ecd5e8eafddfc83f
3723
3722
2024-11-04T10:57:55Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
lots of random info here, so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
TODO:
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
624ddaaee4af99061b441710c57ae72fe439026e
3724
3723
2024-11-04T20:38:57Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
What's this about?
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
What I discovered:
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
Sample scripts:
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Troubleshooting
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
TODO:
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
Resources:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
88b03b384d11fba3a3796ecaf42e22a2285ad24e
3725
3724
2024-11-04T20:39:50Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I wanted to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
75f37486a35007e8be7eae7a3148d55ce51594db
3726
3725
2024-11-04T20:40:32Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I needed to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
009d23dcb718426233f6d89cd624039a92369f96
3727
3726
2024-11-04T20:49:15Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* it took 11 minutes to finally settle if it couldn't detect an Internet connection
* the router I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I needed to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
05dcbf5114e212eda7f837266cf6c67091f25857
3728
3727
2024-11-04T20:50:16Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender took 11 minutes to finally settle if it couldn't detect an Internet connection
* the device I wanted it to connect to was an ArchLinux box, configured as an access point, but every time I needed to reboot the Archlinux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
91800b8e96d5620cdf08852e2901247eb0cd25ca
3729
3728
2024-11-04T20:50:57Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it couldn't detect an Internet connection
* the device I wanted it to connect to is a Linux box, configured as an access point, but every time I needed to reboot the Linux box, the range extender would lose its mind and it needed a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
171c1950d68831ab89eb0bc053a5e4b851b6277f
3730
3729
2024-11-04T20:51:57Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
59f4731efb6d163114b11bdd1e7ee79100816cd2
3731
3730
2024-11-04T20:54:12Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me.
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
7c3ad345e597a190a580eab6793e0847bb4b96ad
3732
3731
2024-11-04T20:56:10Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* A Hotspot is the same as an Access Point; they do the same things.
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
ac44f4bc18307fe5a530e1a86c6d0bc0933a21c9
3733
3732
2024-11-04T20:57:41Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
2be363495a945650c7ad6d5cf02312325fa111cf
3734
3733
2024-11-04T21:01:47Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
CONN="Hotspot"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
826cbc289695d68fd66f74c473cef320eb1dd66e
Wifi-hotspot
0
895
3735
3734
2024-11-04T21:03:27Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use hostapd and dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP server
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
d4c193c7c8e7537a28ee04e62ffe83a877115d54
3736
3735
2024-11-04T21:05:13Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
b0638f796a69814a6797fe9d55d55e31f979403b
3737
3736
2024-11-04T21:07:06Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
bb4a1bb6cdd65b7f9513b8e29d76a8f19983b6dd
3738
3737
2024-11-04T21:08:57Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: Linux wifi dongles)
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
61cb1d7063ac2ce5e03b86b8560854614041aa8b
3741
3738
2024-11-04T21:13:38Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
0a5d74cdd64df8f577cf7b81cb145ddba555d10f
3742
3741
2024-11-05T09:14:24Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
To setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
#
# example port forwarding from wlan0 to wlan1 for a vnc service
# NOTE: adding -- prevents the shell thinking a negative value (-100) is an option to the nft command
nft -- add chain ip nm-shared-wlan1 prerouting { type nat hook prerouting priority -100 \; }
nft add rule nm-shared-wlan1 prerouting tcp dport 5901 dnat to 10.42.0.26
nft add rule nm-shared-wlan1 nat_postrouting ip daddr 10.42.0.26 masquerade
</pre>
To set some DHCP client address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
# (dhcp-host is referring to a client connecting to the wlan0 AP)
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* port forward so clients on HomeWifi can connect to clients on EXT wifi
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
* create DHCP reservation for client MAC (so it will always have the same IP)
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
3c78dd510dd362f5f075aaa6e920aedfce491eac
3743
3742
2024-11-05T09:16:46Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
To setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
#
# example port forwarding from wlan0 to wlan1 for a vnc service
# NOTE: adding -- prevents the shell thinking a negative value (-100) is an option to the nft command
nft -- add chain ip nm-shared-wlan1 prerouting { type nat hook prerouting priority -100 \; }
nft add rule nm-shared-wlan1 prerouting tcp dport 5901 dnat to 10.42.0.26
nft add rule nm-shared-wlan1 nat_postrouting ip daddr 10.42.0.26 masquerade
</pre>
To set some DHCP client address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
# (dhcp-host is referring to a client connecting to the wlan0 AP)
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
64c1d05b9fc06c348c67d374ed176e1af4ff3d5c
3744
3743
2024-11-05T10:39:20Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot
* 802.11n 20/40MHz bandwidth
* different channels
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
b83bfaffe067b27da479952b3c3a32008bf6efaa
3745
3744
2024-11-06T01:06:38Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf, the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot (not with rc.local)
* connect with 802.11n mode (ideally 40MHz bandwidth)
* ability to set different wifi channels (if nearby congestion)
* move from NAT to bridge (DHCP forward and everything on same subnet)
* have AP_STA (Access Point + Client) on one network adapter
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
99bb61f7751e096e9bc3d37f03284bfcc02f9b0e
3746
3745
2024-11-06T11:14:20Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf; the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot (not with rc.local)
* connect with 802.11n mode (ideally 40MHz bandwidth)
* ability to set different wifi channels (if nearby congestion)
* move from NAT to bridge (DHCP forward and everything on same subnet)
* have AP_STA (Access Point + Client) on one network adapter
===Resources===
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
c0531500c379f5853bbf274eb176674bfcc8c27f
3747
3746
2024-11-06T11:18:39Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf; the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot (not with rc.local)
* connect with 802.11n mode (ideally 40MHz bandwidth)
* ability to set different wifi channels (if nearby congestion)
* move from NAT to bridge (DHCP forward and everything on same subnet)
* have AP_STA (Access Point + Client) on one network adapter
===Resources===
General info:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
ce8768379eaa1d16d88596c041bb7b43a94e4e87
3749
3747
2024-11-07T00:34:27Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf; the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
[[File:Network-diagram-wifi-nat-router.png]]
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log-level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot (not with rc.local)
* connect with 802.11n mode (ideally 40MHz bandwidth)
* ability to set different wifi channels (if nearby congestion)
* move from NAT to bridge (DHCP forward and everything on same subnet)
* have AP_STA (Access Point + Client) on one network adapter
===Resources===
General info:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
8f0ed3417e0b451641beb64927c7b824e748bfbe
3750
3749
2024-11-08T03:23:42Z
Admin
1
wikitext
text/x-wiki
experimental setup, use at your own risk!
Lots of random info here, just so I have a central place to keep configs, tips, links, etc..
===What's this about?===
The wireless range extender I bought (D-Link DAP-1530) didn't quite work the way I wanted with the systems I was using:
* after boot-up, the extender takes 11 minutes to finally settle if it can't detect an Internet connection
* the device I wanted it to connect to is a Linux box that is configured as an access point, but every time I need to reboot the Linux box, the range extender loses its mind and needs a cold restart to regain connectivity with the Linux box.
These issues made me look at rolling my own wifi extender using a raspberry pi.
===What I discovered===
There are a lot of articles and howto's on setting up a shared hotspot, but many of them use several components (hostapd, dhcpcd, resolveconf, wpa_supplicant, dnsmasq) that all need to be talking to each other the right way. With too many variables, many things can go wrong. Although these solutions may work, the simplicity of a more integrated network managing system like NetworkManager makes a lot more sense to me. The setup below still uses wpa_supplicant and dnsmasq alongside NetworkManager, but the work to get it set up is way less.
* Terminology: a Hotspot is the same as an Access Point; they do the same things.
* Don't use iwd, hostapd or dnsmasq(*) but instead use NetworkManager; it's the modern way to manage network configurations
* You can safely uninstall iwd, hostapd, dhcpcd, dhclient as NetworkManager has a built-in DHCP and DNS server and can set up Access Points just fine
* You do not need any editing in /etc/network/interfaces and friends
* You do not need /etc/hostapd*, or /etc/dhcpcd*, or /etc/dnsmasq* files
* You do not need resolvconf; the systemd installed version of systemd-resolved is fine and is used by NetworkManager
* The out-of-the-box NetworkManager does not need any further config files (I'm looking at you /etc/NetworkManager/conf.d/dns.conf with your dns=dnsmasq)
* Running a wifi-client and an Access Point on the same network card (it's called AP-STA) may be possible, but try with two separate adapters first
* learn the basic commands of nmcli; it's a very nice tool to manipulate the network configurations
* NetworkManager uses simple key-files which are in plain text readable ascii
* If you want to manually edit any of the configurations files under /etc/NetworkManager be sure to load the new config with nmcli general reload
* the creation of a hotspot with NetworkManager has it's own shortcut 'wifi hotspot', which really simplifies things, see example below
* You do not need to put any additional configuration in /etc/wpa_supplicant/* (the default wpa_supplicant.conf is fine)
* once the hotspot has been configured it does not load up automatically, do this from /etc/rc.local (maybe use autoconnect=yes?)
* the setup created by the scripts shown below creates a NAT-shared wifi extender; i.e. the clients will be on a completely different subnet than the HomeWifi network
* when the AP (connects to the HomeWifi) and the hotspot (broadcasts its own SSID) are running, you should have two green/connected lines in nmcli con (if using two adapters)
* Use a USB Wireless adapter that is supported by the Linux kernel out of the box, otherwise you'll have to compile the drivers for it (doable, example: [[Linux wifi dongles]])
(*) NetworkManager does use the dnsmasq binary, but it only needs dnsmasq-base and the dnsmasq systemd service should be set to masked/disabled/stopped.
So far I have only been using 2.4Ghz 802.11 bg modes. This is probably less efficient than n mode, but for now I'm documenting just bg mode.
[[File:Network-diagram-wifi-nat-router.png]]
===Sample scripts===
Create the normal client connection to another wifi router
<pre>
# use this to create a wifi connection using wlan0 to connect to your Internet-connected home wifi network
SSID="HomeWifi"
IF="wlan0"
nmcli con add con-name $SSID type wifi ssid $SSID ifname $IF
nmcli con mod $SSID 802-11-wireless-security.key-mgmt WPA-PSK
nmcli con mod $SSID 802-11-wireless-security.psk "secretpassword"
</pre>
Create the hotspot connection
<pre>
# use this to create a hotspot (aka Access Point) using wlan1 so other wireless clients can connect and use the internet from wlan0
# WPA-PSK is implied with 'wifi hotspot'
IF="wlan1"
SSID="HomeWifi-EXT"
nmcli dev wifi hotspot ssid $SSID password "secretpasswordext" ifname $IF band bg
</pre>
Setup port forwarding:
<pre>
# /etc/NetworkManager/dispatcher.d/pre-up/90-modify-nft-firewall
nft flush ruleset
nft -f - <<EOF
table ip nm-shared-wlan1 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlan1" iifname "wlan0" accept
ip saddr 10.42.0.0/24 iifname "wlan1" oifname "wlan0" accept
}
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 5901 dnat to 10.42.0.26
}
}
EOF
</pre>
Setup client ip address reservations:
<pre>
# /etc/NetworkManager/dnsmasq-shared.d/10-reserved-client-ip-addresses
dhcp-host=28:11:a8:f4:8d:91,10.42.0.26
dhcp-host=c0:55:12:da:f3:12,10.42.0.27
</pre>
===Troubleshooting===
If things don't work, try to get as much information as you can:
<pre>
# show all wireless interfaces
iwconfig
# show currently configured adapters
ip a
# show default route
ip route
</pre>
<pre>
wpa_cli -i <interface> log_level debug # show lots of activity
# show logs (-f or --follow) as they get produced
journalctl -u NetworkManager -u wpa_supplicant -u systemd-networkd --follow
wpa_cli -i <interface> log-level info # default (not sure if it has to be set back)
</pre>
Check country and permitted wifi bands/frequencies:
<pre>
iw reg get
iw reg set <CC>
iw phy phy0 info
</pre>
<pre>
# /etc/NetworkManager/conf.d/99-wifi.conf
# disable mac address randomization (optional, I didn't have to disable it on my system)
[device-wifi-no-scan-mac-rand]
wifi.scan-rand-mac-address=no
</pre>
<pre>
# show DHCP leases obtained by clients on the wlan1 network:
cat /var/lib/NetworkManager/dnsmasq-wlan1.leases
</pre>
<pre>
# show netfilter ip rules
nft list ruleset
</pre>
===TODO===
* autoconnect hotspot (not with rc.local)
* connect with 802.11n mode (ideally 40MHz bandwidth)
* ability to set different wifi channels (if nearby congestion)
* move from NAT to bridge (DHCP forward and everything on same subnet)
* have AP_STA (Access Point + Client) on one network adapter
===Resources===
General info:
* https://www.raspberrypi.com/tutorials/host-a-hotel-wifi-hotspot/
* https://wiki.archlinux.org/title/Software_access_point
* https://wiki.archlinux.org/title/NetworkManager
Troubleshooting:
* https://unix.stackexchange.com/questions/612498/hotspot-network-creation-took-too-long-and-failed-activation
* https://github.com/raspberrypi/bookworm-feedback/issues/220
4e7839730ffbafd4e3dcba5527c04542ad64cc1c
Linux info
0
25
3739
3711
2024-11-04T21:09:21Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[vim-cheatsheet]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
[[archlinux]]
[[Linux wifi dongles]]
[[wifi-hotspot]]
c7ae2b68b4871d8cbac2ae042a23ae38c9f49e1a
Linux wifi dongles
0
896
3740
2024-11-04T21:12:47Z
Admin
1
Created page with "Compile instructions for Linux WiFi dongles It can be as simple as this: <pre> apt-get install raspberrypi-kernel-headers build-essential bc dkms git git clone https://github.com/morrownr/8821cu-20210916.git cd ~/src/8821cu-20210916 sudo ./install-driver.sh </pre>"
wikitext
text/x-wiki
Compile instructions for Linux WiFi dongles
It can be as simple as this:
<pre>
apt-get install raspberrypi-kernel-headers build-essential bc dkms git
git clone https://github.com/morrownr/8821cu-20210916.git
cd ~/src/8821cu-20210916
sudo ./install-driver.sh
</pre>
51737a0c746b4824c3a35055416530992e7b2e0c
File:Network-diagram-wifi-nat-router.png
6
897
3748
2024-11-07T00:34:03Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Main Page
0
1
3751
3710
2024-12-22T11:59:14Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Astrophotography]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around December 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
559f3fe714d86b6a96cd98fd3e9e36a95846f568
3775
3751
2025-01-02T04:05:07Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Astronomy]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around December 2023.
[[File:Kiwisdr-waterfall.jpg|left]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
64a05b8b68bd9eebe39a21b36510148e90c50b18
File:Comet Leonard 2021-12-30.jpg
6
898
3752
2024-12-22T12:00:14Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Astrophotography
0
899
3753
2024-12-22T12:00:27Z
Admin
1
Created page with "Gallery: [[File:Comet Leonard 2021-12-30.jpg]]"
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg]]
f7f0187af6649f8587137843e609e1a186cbac10
3761
3753
2024-12-22T12:04:30Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg]]
[[File:NGC362 glob MeadeLT6 180sec 29kly.jpg]]
a88cdb820820cce05790f134a1094043920293bd
3762
3761
2024-12-23T06:15:15Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC5128 Centaurus-A]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC253 Sculptor Galaxy]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC2070 Tarantula Nebula]]
[[File:NGC362 glob MeadeLT6 180sec 29kly.jpg|400px|thumb|none|NGC362 Globular Cluster in Small Magellanic Cloud]]
3534733592cbfd5ec066ab20b6153b0d6e2918e0
3764
3762
2024-12-25T01:11:36Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC5128 Centaurus-A]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC253 Sculptor Galaxy]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC2070 Tarantula Nebula]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC362 Globular Cluster in Small Magellanic Cloud]]
943855825bc3978d59c7eca99e40d9fbdbb27d65
3765
3764
2024-12-25T01:12:28Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC5128 Centaurus-A]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC253 Sculptor Galaxy]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC2070 Tarantula Nebula in the Large Magellanic Cloud]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC362 Globular Cluster in the Small Magellanic Cloud]]
38108410bba15be2259a76ce4dc53952b9284034
3767
3765
2024-12-25T21:01:41Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster in the Small Magellanic Cloud]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365]]
b774894184a2c0b5c7dcc5424ae9081a31ef0d1c
3768
3767
2024-12-25T21:05:29Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster in the Small Magellanic Cloud (160,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly))]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
60c1a82fcb27ca62c2a804787df227755ba4b355
3769
3768
2024-12-25T21:06:46Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly))]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
a07d43f057e3063519a6f49349e45312d9e0c7ba
3770
3769
2024-12-25T21:07:24Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
9e73673afc4a59dc4a25d50ec147a0a16800adeb
3772
3770
2024-12-25T21:14:53Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
f9549040b474f910661bf74a5b777f50c609652f
3774
3772
2024-12-26T23:55:10Z
Admin
1
wikitext
text/x-wiki
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
9c284e69fd7cc9fc756dede627b2961042de1f9e
3782
3774
2025-01-02T04:19:21Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with my current [[Telescope]].
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
69f0e347939dcf7c169cbbcff08c3b7e14f7f869
3783
3782
2025-01-02T04:19:41Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
80fb1de38bbe9b88ae75bfb8788995f2af5f0f94
3784
3783
2025-01-02T04:20:58Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
5c6fa195e4ee313be161b1dc2ae48b2082443e0b
File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg
6
900
3754
2024-12-22T12:00:54Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg
6
901
3755
2024-12-22T12:01:23Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg
6
902
3756
2024-12-22T12:01:49Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg
6
903
3757
2024-12-22T12:02:26Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg
6
904
3758
2024-12-22T12:02:51Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg
6
905
3759
2024-12-22T12:03:35Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC362 glob MeadeLT6 180sec 29kly.jpg
6
906
3760
2024-12-22T12:04:16Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg
6
907
3763
2024-12-25T01:11:02Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg
6
908
3766
2024-12-25T21:00:24Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg
6
909
3771
2024-12-25T21:13:55Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg
6
910
3773
2024-12-26T23:53:48Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Astronomy
0
911
3776
2025-01-02T04:05:47Z
Admin
1
Created page with " A collection of photo's I made with a 6" SCT: * [[Astrophotography]]"
wikitext
text/x-wiki
A collection of photo's I made with a 6" SCT:
* [[Astrophotography]]
a2bf29aa172ea45455bea5c647b2b9aa23f9ad34
3778
3776
2025-01-02T04:10:29Z
Admin
1
wikitext
text/x-wiki
A collection of photo's I made with a 6" SCT:
* [[Astrophotography]]
My main telescope setup:
* [[Telescopes]]
b7ccea7a39d2b9215ce05f5048288de1ac6350be
File:Meade-LT6-SV165-MeleQ3-ZWO-EAF-SV505C-QHY715C-HEQ5.jpg
6
912
3777
2025-01-02T04:09:29Z
Admin
1
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Telescopes
0
913
3779
2025-01-02T04:10:41Z
Admin
1
Created page with " [[File:Meade-LT6-SV165-MeleQ3-ZWO-EAF-SV505C-QHY715C-HEQ5.jpg]]"
wikitext
text/x-wiki
[[File:Meade-LT6-SV165-MeleQ3-ZWO-EAF-SV505C-QHY715C-HEQ5.jpg]]
8d8dac9a2859674d663efc35e133b3b8aa2b576d
3780
3779
2025-01-02T04:12:54Z
Admin
1
wikitext
text/x-wiki
This is my current telescope setup:
The main scope is a 6" diameter (15cm) Schmidt-Cassegrain with a focal length of 1524mm.
Just visible at the back is a much smaller 4cm diameter guide scope with a focal length of 160mm.
[[File:Meade-LT6-SV165-MeleQ3-ZWO-EAF-SV505C-QHY715C-HEQ5.jpg]]
11df9fce41d75eb6b6876c2058acbc2a7436e3ae
3781
3780
2025-01-02T04:17:17Z
Admin
1
wikitext
text/x-wiki
This is my current telescope setup:
The main scope is a 6" diameter (15cm) Schmidt-Cassegrain with a focal length of 1524mm.
Just visible at the back is a much smaller 4cm diameter guide scope with a focal length of 160mm.
The red box at the end is an automatic focuser and is attached to the scope's focusing knob.
Underneath that, at the end of the optical path is the main camera, an SV505C (resolution 2712 x 1538 pixels)
Underneath that, with the round cable, is a small computer which allows me to fully operate this rig remotely.
The white contraption underneath is a SkyWatcher HEQ-5 Pro mount. This helps to counteract the earth's rotation so that objects remain fixed in the camera.
[[File:Meade-LT6-SV165-MeleQ3-ZWO-EAF-SV505C-QHY715C-HEQ5.jpg]]
b8cc5865503b8f64f2360b02e7b4ba222c1c4e7e
Astrophotography
0
899
3785
3784
2025-01-02T04:21:38Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (7 light-minutes)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
19db6cc2e20a7810a9ee61180602dc76c57b6b75
3786
3785
2025-01-02T04:27:44Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000012 ly, 114M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
480c14a7e5d61c0391f67dcfa589b70ea4903a1f
3787
3786
2025-01-02T04:32:50Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Gallery:
[[File:Comet Leonard 2023-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
7f5baab135aa46f881eff34b719f913a62f78bde
3788
3787
2025-01-02T04:33:17Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
f718e7edf52153c275e3d57dfc5e3066b9f97f10
3789
3788
2025-01-02T04:40:50Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
96bbb0b68cf58e78389608e82a221a47799d4621
3790
3789
2025-01-02T04:51:38Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
172adf73730b41bb12e5eaff18852f82435ad906
3791
3790
2025-01-02T04:54:26Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
All the big individual stars you see in photos of galaxies are still from our own milky way, they appear as flies on a windscreen.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
f4b99a810292dae4721f886842e72da635552a44
3792
3791
2025-01-02T04:56:07Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
Most of the nearby objects are Nebulas and they are made up from clouds of dust and gases. They are lit up in various colours by nearby stars.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
All the big individual stars you see in photos of galaxies are still from our own milky way, they appear as flies on a windscreen.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
bf6d2086fa20575a13fe2be24d88d7332ea475be
3793
3792
2025-01-02T04:58:04Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
Most of the nearby objects are Nebulas and they contain clouds of dust and gas. They are lit up in various colours by nearby stars.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
All the big individual stars you see in photos of galaxies are still from our own milky way, they appear as flies on a windscreen.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet Leonard, approaching our sun (0.000023 ly, 300M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
ea58926e0d131b25ae9ad97d240923b00d609e19
3794
3793
2025-01-03T03:08:50Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
Most of the nearby objects are Nebulas and they contain clouds of dust and gas. They are lit up in various colours by nearby stars.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
All the big individual stars you see in photos of galaxies are still from our own milky way, they appear as flies on a windscreen.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet C/2021 A1 (Leonard), approaching our sun (0.000023 ly, 127M km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
1ab90c70bcdef28d35ffbb350b1e0915fb65f0ce
3795
3794
2025-01-03T03:10:06Z
Admin
1
wikitext
text/x-wiki
All of these images were taken by me, most with one of my [[Telescopes]].
The distance to each object is given in light-years from earth.
For context, to see where these objects are located:
Objects with a distance of less than 2,000 light years are in close vicinity to our own solar system and in the same milky way 'Orion' arm.
Most of the nearby objects are Nebulas and they contain clouds of dust and gas. They are lit up in various colours by nearby stars.
The next arm closer to the core of our milky way is the Sagittarius arm (about 4,000 - 7,000 light years from earth)
The center of our galaxy is believed to be around 26,000 light years away from us.
The total diameter of our galaxy is around 100,000 light years.
Some of the nearest galaxies are still very close to our own milky way, but at a distance of about the diameter of our own milky way we find the Large Magellanic cloud.
The nearest well-formed spiral galaxy is Andromeda at about 2.5 Million light years from us.
All the big individual stars you see in photos of galaxies are still from our own milky way, they appear as flies on a windscreen.
Gallery:
[[File:Comet Leonard 2021-12-30.jpg|400px|thumb|none|Comet C/2021 A1 (Leonard), approaching our sun (0.000013 ly, 127 million km)]]
[[File:M42 2024-03-24 8-inch-F4-QHY715C 100s 1500ly.jpg|400px|thumb|none|M42 Orion Nebula (1,500 ly)]]
[[File:M20-2023-07-09 8inchNewt-D1100-trifid small 4kly.jpg|400px|thumb|none|M20 Trifid Nebula (4,000 ly)]]
[[File:NGC 3372 2024-03-26 Eta-carina center-stars 8-inch-F4 QHY715C 60s 9kly.jpg|400px|thumb|none|Eta Carina nebula (9,000 ly)]]
[[File:NGC 362 2024-12-23 globular cluster SMC 510sec LT6 SV505 bin2.jpg|400px|thumb|none|NGC 362 Globular Cluster (29,000 ly)]]
[[File:NGC2070 2024-12-22 tarantula LT6 SV505C 30m 160kly.jpg|400px|thumb|none|NGC 2070 Tarantula Nebula in the Large Magellanic Cloud (160,000 ly)]]
[[File:NGC 1313 2024-12-26 LT6ACF SV505C 2x2 g100 50mins 10Mly.jpg|400px|thumb|none|NGC 1313 Topsy Turvy Galaxy (10 Million ly)]]
[[File:NGC253 2024-11-23 Sculptor LT6 SV505 57x30sec 28min 11Mly.jpg|400px|thumb|none|NGC 253 Sculptor Galaxy (11 Million ly)]]
[[File:NGC5128 2024-05-19 Centaurus-A MeadeLT6 F10 SV505C 60min 12Mly.jpg|400px|thumb|none|NGC 5128 Centaurus-A (12 Million ly)]]
[[File:M83 2024-04-28 MeadeLT6 SV505C southern-pinwheel 42mins 15Mly.jpg|400px|thumb|none|M83 Southern Pinwheel Galaxy (15 Million ly)]]
[[File:NGC 1365 2024-12-25 LT6ACF SV505C 30min (300s-bin2-g100-o10) 56Mly.jpg|400px|thumb|none|NGC 1365 (56 Million ly)]]
f4f3f205ddf4fb28542e14f6283a40da51896cc0
Resize Root Filesystem
0
266
3796
3496
2025-01-08T02:01:24Z
Admin
1
wikitext
text/x-wiki
This procedure details how to copy the current filesystem to a new disk. This is a preferred scenario when:
*the current root filesystem is becoming too small
*you wish to shrink the existing root filesystem (think vm's)
Steps to achive the copy are:
* create or attach a new disk
* create a root (and swap partition) on the disk (fdisk /dev/...)
* format the disk with EXT2
* mount the disk to a directory on the live system
* copy all files to the new disk
* copy the special device files (?)
* chroot into the new disk
* install the bootloader to the MBR of the new disk
Copy command:
<pre>
(cd / ; tar -cf - . --one-file-system) | (cd /mnt/ ; tar xvfpB -)
</pre>
Find out the new disk's UUID:
<pre>
ls -l /dev/disk/by-uuid/
</pre>
* Update the new UUID in /etc/fstab
* Update the new UUID in /boot/grub/grub.cfg
Install bootloader:
There are (as far as I know of) three ways of installing GRUB onto the new disk.
1 * After copying all files, remove the old drive and boot off a live Linux CD (e.g. Knoppix) (the idea here is that hd0 is the new drive and issuing the grub-install command will simply install on hd0.
2 * Swap the drives (master becomes slave, slave becomes master) and in the BIOS designate to boot of the second disk. (again, grub will install on hd0 which is the new disk)
3 * with the new disk attached as /dev/sdb, instruct GRUB to install there but to refer to it as /dev/sda (or hd0 as we want). (my preference)
Method 1 and 2
http://www.linuxjournal.com/content/copy-your-linux-install-different-partition-or-drive
Method 3
(with the new disk (/dev/sdb) still mounted at /mnt/)
<pre>
grub-install -d /mnt /dev/sdb
-or-
grub-install --target=i386-pc /dev/sdb
</pre>
* shutdown
* take out old disk, and replace with the new disk as the primary boot disk
* start the machine
GRUB v1 only:
When you're back in the O/S update the menu.lst to make sure the correct boot device (e.g. /dev/sda) is used.
<pre>
grub-install /dev/sda
update-grub
</pre>
* reboot and all should be fine
===Resize Filesystem in an image===
So now you have a dd image of your disk and found out that the device you wish to restore it to is smaller in size...
All good, what we do next is to resize the filesystem inside the dd image.
Just to be sure we understand the terminology:
* a block device is the physical capacity of a storage device (e.g. an 8GB Flash drive)
* a partition is a logical storage container that is created on the block device. A block device can hold multiple partitions.
* a filesystem is a logical arrangement of data that is used by an operating system to save and read files. A partition usually holds only one filesystem.
If we want to make a larger partition fit on a smaller partition we need to make sure that the used space inside the larger partition doesn't exceed the size of the smaller partition. Once we know this, the process is relatively simple:
* attach a loop device to the disk-image (using losetup)
* run a filesystem-check on the partition we wish to resize (using e2fsck)
* shrink the filesystem to the desired size (using resize2fs)
* shrink the partition to a size that is (slightly) larger than the filesystem
After this, we can just write the disk image to the (smaller) block device without running into disk space issues
The Process:
Attach a loop device to the various partitions inside the disk image:
<pre>
losetup --find --partscan imagefile.dd
</pre>
Reveal the partition devices that were assigned:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <--- imagefile.dd
259 0 42811 loop0p1 <--- partition 1 inside imagefile.dd
259 1 7281664 loop0p2 <--- partition 2 inside imagefile.dd
</pre>
Run a filesystem check:
<pre>
root@pi:/data# e2fsck /dev/loop0p2
e2fsck 1.44.5 (15-Dec-2018)
/dev/loop0p2 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 391641, i_blocks is 16, should be 8. Fix<y>? yes
Inode 391642, i_blocks is 16, should be 8. Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(1393664--1393838) -(1394673--1394890) -(1612165--1612167) -1612891 -1612982 -(1615784--1615789) -1622693 -1622836 -1622855 -(1626336--1626342) -(1638720--1638734) -(1638841--1638851) -(1639248--1639258) -1665037 -1666053 -(1668096--1668097)
Fix<y>? yes
Free blocks count wrong for group #49 (4771, counted=4801).
Fix<y>? yes
Free blocks count wrong for group #50 (14121, counted=14151).
Fix<y>? yes
Free blocks count wrong (576554, counted=598442).
Fix<y>? yes
/dev/loop0p2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/loop0p2: 262820/441728 files (0.3% non-contiguous), 1221974/1820416 blocks
</pre>
(so a few errors there, but you may not see any errors)
Shrink the filesystem to the desired size:
<pre>
root@pi:/data# resize2fs /dev/loop0p2 7000M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/loop0p2 to 1792000 (4k) blocks.
The filesystem on /dev/loop0p2 is now 1792000 (4k) blocks long.
</pre>
The filesystem should now be small enough to fit on our target block device. Since we no longer need to access the partitions inside the disk-image we can disconnect the loop devices from the disk image:
<pre>
losetup --detach /dev/loop0
</pre>
Next, we shrink the partition to a size that is (slightly) larger than the filesystem we just shrunk.
First, inspect the target block device and determine our start sector:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
</pre>
Orginally, the start sector of the 2nd partition began at 94208 so we'll leave it at that.
Then we need to calculate the end sector.
The resize2fs command used a value of 7000M. In Bytes, this is:
7,000 * 1024 (k) * 1024 (B) = 7340032000 Bytes
In 512-Byte blocks, this is: 7340032000 / 512 = 14336000
So the End-sector where this 7,000MB block needs to end is 94208 + 14336000 = 14430208
Let's add one more 512Byte block to give the filesystem enough room to fit in: 14430209
Then we can simply delete the partition from the block device and re-add it with the smaller size:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda <---- the disk of the system that we're currently working on
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <---- the disk-image dd file
259 0 42811 loop0p1
259 1 7281664 loop0p2 <---- the partition containing the filesystem we have just shrunk
8 16 7822336 sdb <---- the target block device (an 8GB Flash drive)
8 17 42811 sdb1 <---- the first partition (we'd like to keep as-is)
root@pi:/data# fdisk /dev/sdb <---- running fdisk on the target block device
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n <------ create a new partition (partition 2 was already gone)
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-15644671, default 2048): 94208 <----- where the original 2nd partition started
Last sector, +/-sectors or +/-size{K,M,G,T,P} (94208-15644671, default 15644671): 14430209 <---- our calculated end sector
Created a new partition 2 of type 'Linux' and of size 6.9 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@pi:/data#
</pre>
One final check:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
/dev/sdb2 94208 14430209 14336002 6.9G 83 Linux
root@pi:/data#
</pre>
Now we have created a smaller partition on the target block device that is just large enough to hold the smaller filesystem.
We can now write the disk-image dd file to the block device without running into disk space issues.
<pre>
dd if=diskimage.dd of=/dev/sdb bs=1M
</pre>
bbc132e64a4926108b9f207a4cd91877ee34d754
3797
3796
2025-01-08T02:08:32Z
Admin
1
wikitext
text/x-wiki
This procedure details how to copy the current filesystem to a new disk. This is a preferred scenario when:
*the current root filesystem is becoming too small
*you wish to shrink the existing root filesystem (think vm's)
Steps to achive the copy are:
* create or attach a new disk
* create a root (and swap partition) on the disk (fdisk /dev/...)
* format the disk with EXT2
* mount the disk to a directory on the live system
* copy all files to the new disk
* copy the special device files (?)
* chroot into the new disk
* install the bootloader to the MBR of the new disk
Copy command:
<pre>
(cd / ; tar -cf - . --one-file-system) | (cd /mnt/ ; tar xvfpB -)
</pre>
Find out the new disk's UUID:
<pre>
ls -l /dev/disk/by-uuid/
</pre>
* Update the new UUID in /etc/fstab
* Update the new UUID in /boot/grub/grub.cfg
Install bootloader:
There are (as far as I know of) three ways of installing GRUB onto the new disk.
1 * After copying all files, remove the old drive and boot off a live Linux CD (e.g. Knoppix) (the idea here is that hd0 is the new drive and issuing the grub-install command will simply install on hd0.
2 * Swap the drives (master becomes slave, slave becomes master) and in the BIOS designate to boot of the second disk. (again, grub will install on hd0 which is the new disk)
3 * with the new disk attached as /dev/sdb, instruct GRUB to install there but to refer to it as /dev/sda (or hd0 as we want). (my preference)
Method 1 and 2
http://www.linuxjournal.com/content/copy-your-linux-install-different-partition-or-drive
Method 3
(with the new disk (/dev/sdb) still mounted at /mnt/)
<pre>
grub-install -d /mnt /dev/sdb
-or-
grub-install --target=i386-pc /dev/sdb
</pre>
* shutdown
* take out old disk, and replace with the new disk as the primary boot disk
* start the machine
GRUB v1 only:
When you're back in the O/S update the menu.lst to make sure the correct boot device (e.g. /dev/sda) is used.
<pre>
grub-install /dev/sda
update-grub
</pre>
* reboot and all should be fine
Grub Rescue:
if your system doesn't boot (maybe made a typo in the UUID) then enter this in the grub rescue prompt:
<pre>
ls (get the current disk details)
set root=(hd0,msdos1)
set prefix=(hd0,msdos1)/boot/grub
insmod normal
normal
</pre>
reboot, login and enter:
<pre>
grub-install /dev/sda
update-grub
</pre>
===Resize Filesystem in an image===
So now you have a dd image of your disk and found out that the device you wish to restore it to is smaller in size...
All good, what we do next is to resize the filesystem inside the dd image.
Just to be sure we understand the terminology:
* a block device is the physical capacity of a storage device (e.g. an 8GB Flash drive)
* a partition is a logical storage container that is created on the block device. A block device can hold multiple partitions.
* a filesystem is a logical arrangement of data that is used by an operating system to save and read files. A partition usually holds only one filesystem.
If we want to make a larger partition fit on a smaller partition we need to make sure that the used space inside the larger partition doesn't exceed the size of the smaller partition. Once we know this, the process is relatively simple:
* attach a loop device to the disk-image (using losetup)
* run a filesystem-check on the partition we wish to resize (using e2fsck)
* shrink the filesystem to the desired size (using resize2fs)
* shrink the partition to a size that is (slightly) larger than the filesystem
After this, we can just write the disk image to the (smaller) block device without running into disk space issues
The Process:
Attach a loop device to the various partitions inside the disk image:
<pre>
losetup --find --partscan imagefile.dd
</pre>
Reveal the partition devices that were assigned:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <--- imagefile.dd
259 0 42811 loop0p1 <--- partition 1 inside imagefile.dd
259 1 7281664 loop0p2 <--- partition 2 inside imagefile.dd
</pre>
Run a filesystem check:
<pre>
root@pi:/data# e2fsck /dev/loop0p2
e2fsck 1.44.5 (15-Dec-2018)
/dev/loop0p2 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 391641, i_blocks is 16, should be 8. Fix<y>? yes
Inode 391642, i_blocks is 16, should be 8. Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(1393664--1393838) -(1394673--1394890) -(1612165--1612167) -1612891 -1612982 -(1615784--1615789) -1622693 -1622836 -1622855 -(1626336--1626342) -(1638720--1638734) -(1638841--1638851) -(1639248--1639258) -1665037 -1666053 -(1668096--1668097)
Fix<y>? yes
Free blocks count wrong for group #49 (4771, counted=4801).
Fix<y>? yes
Free blocks count wrong for group #50 (14121, counted=14151).
Fix<y>? yes
Free blocks count wrong (576554, counted=598442).
Fix<y>? yes
/dev/loop0p2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/loop0p2: 262820/441728 files (0.3% non-contiguous), 1221974/1820416 blocks
</pre>
(so a few errors there, but you may not see any errors)
Shrink the filesystem to the desired size:
<pre>
root@pi:/data# resize2fs /dev/loop0p2 7000M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/loop0p2 to 1792000 (4k) blocks.
The filesystem on /dev/loop0p2 is now 1792000 (4k) blocks long.
</pre>
The filesystem should now be small enough to fit on our target block device. Since we no longer need to access the partitions inside the disk-image we can disconnect the loop devices from the disk image:
<pre>
losetup --detach /dev/loop0
</pre>
Next, we shrink the partition to a size that is (slightly) larger than the filesystem we just shrunk.
First, inspect the target block device and determine our start sector:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
</pre>
Orginally, the start sector of the 2nd partition began at 94208 so we'll leave it at that.
Then we need to calculate the end sector.
The resize2fs command used a value of 7000M. In Bytes, this is:
7,000 * 1024 (k) * 1024 (B) = 7340032000 Bytes
In 512-Byte blocks, this is: 7340032000 / 512 = 14336000
So the End-sector where this 7,000MB block needs to end is 94208 + 14336000 = 14430208
Let's add one more 512Byte block to give the filesystem enough room to fit in: 14430209
Then we can simply delete the partition from the block device and re-add it with the smaller size:
<pre>
root@pi:/data# cat /proc/partitions
major minor #blocks name
8 0 976762584 sda <---- the disk of the system that we're currently working on
8 1 53938206 sda1
8 2 51210240 sda2
8 3 48828416 sda3
8 4 822784000 sda4
11 0 1048575 sr0
7 0 7822336 loop0 <---- the disk-image dd file
259 0 42811 loop0p1
259 1 7281664 loop0p2 <---- the partition containing the filesystem we have just shrunk
8 16 7822336 sdb <---- the target block device (an 8GB Flash drive)
8 17 42811 sdb1 <---- the first partition (we'd like to keep as-is)
root@pi:/data# fdisk /dev/sdb <---- running fdisk on the target block device
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n <------ create a new partition (partition 2 was already gone)
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-15644671, default 2048): 94208 <----- where the original 2nd partition started
Last sector, +/-sectors or +/-size{K,M,G,T,P} (94208-15644671, default 15644671): 14430209 <---- our calculated end sector
Created a new partition 2 of type 'Linux' and of size 6.9 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@pi:/data#
</pre>
One final check:
<pre>
root@pi:/data# fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xed429e5a
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 93813 85622 41.8M c W95 FAT32 (LBA)
/dev/sdb2 94208 14430209 14336002 6.9G 83 Linux
root@pi:/data#
</pre>
Now we have created a smaller partition on the target block device that is just large enough to hold the smaller filesystem.
We can now write the disk-image dd file to the block device without running into disk space issues.
<pre>
dd if=diskimage.dd of=/dev/sdb bs=1M
</pre>
01c7c92a86d9f78fa3566ec6352c14fd7ccccb52
Linux info
0
25
3798
3739
2025-02-10T10:14:26Z
Admin
1
wikitext
text/x-wiki
hints and tips
[http://tldp.org/ The Linux Documentation Project]
[[samba-domain-controller]]
[[Linux_Bash]]
[[Single Board Computers]]
[[Openvpn-setup]]
[[StopDiskWrites]]
[[Resize Root Filesystem]]
[[Disk-Imaging]]
[[dovecot-imapd]]
[[wireless-setup]]
[[sound-alsa]]
[[console-colours]]
[[rc-controller]]
[[Linux-cli-intro]]
[[Syncthing-share]]
[[gtk-scroll-behaviour]]
[[ffmpeg-examples]]
[[vim-config]]
[[vim-cheatsheet]]
[[systemd-tips]]
[[vnc]]
[[git]]
[[bash-examples]]
[[archlinux]]
[[Linux wifi dongles]]
[[wifi-hotspot]]
[[sound-effects]]
b7a413db3c2d8df9c3ea60264a488f4bda8b3de3
Sound-effects
0
914
3799
2025-02-10T10:14:46Z
Admin
1
Created page with " <pre> play -c2 -n synth whitenoise band -n 100 24 band -n 300 100 gain +20 </pre>"
wikitext
text/x-wiki
<pre>
play -c2 -n synth whitenoise band -n 100 24 band -n 300 100 gain +20
</pre>
a7ecc4e802d63d3f2d178b6d3deb318322fec2e1
Amateur Radio
0
237
3800
3404
2025-03-16T09:26:27Z
Admin
1
wikitext
text/x-wiki
[[File:Australian Band Plans 140709.pdf]] WIA - Australian Amateur Band Plans - updated 09/07/2014
* My entry on [http://www.qrz.com/db/VK2CEL www.qrz.com]
* Some [[International contests]]
* [[2018 VK Contest Dates]] (Phone)
* [[2017 VK Contest Dates]] (Phone)
* [[2016 VK Contest Dates]] (Phone)
* [[2015 VK Contest Dates]] (Phone)
* [[2014 VK Contest Dates]] (Phone)
* [[2013 VK Contest Dates]] (Phone)
* [[aprs]]
* [[sdr]]
* [[qrp]] (Low Power)
* [[impedance matching]]
* [[common mode interference]]
* [[baluns]]
* [[low-cost antenna shootout 70cm]]
* [[Ionosphere]]
* [[QCX-transceiver]]
* Online Intermodulation Calculator: http://www.marcelpost.com/intermod/
* [[RS41]] Radiosonde STM32 fun
* [[satellites]]
c11c373be0dd254d3767f1ce4fb9bfee3abf2ba6
Satellites
0
915
3801
2025-03-16T09:33:53Z
Admin
1
Created page with " <pre> NORAD Type Name uplink downlink details voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity) SO-115 145.925 436.888 aka HADES 43017 voice AO-91 435.250 (+67Hz) 145.960 AO-92 PO-101 22825 afsk AO-27 145.850 436.795 aka Eyesat Lilacsat-2 </pre> ===..."
wikitext
text/x-wiki
<pre>
NORAD Type Name uplink downlink details
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 voice AO-91 435.250 (+67Hz) 145.960
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
01cf4bf61e16a1e4b7b75d9c33b465a34486a96d
3802
3801
2025-03-16T09:35:32Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Type Name uplink downlink details
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 voice AO-91 435.250 (+67Hz) 145.960
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
577d02484f01fcd549d059d580c9014bb6dcf0ce
3803
3802
2025-03-16T09:35:59Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Type Name uplink downlink details
------------------------------------------------------------------------
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 voice AO-91 435.250 (+67Hz) 145.960
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
8694f91679f19e596fd0e0e324081f0eb45636e9
3804
3803
2025-03-16T09:36:42Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Type Name uplink downlink details
------------------------------------------------------------------------
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
8c4c291d9a27a4cf38d7a52d998e0728cc00cbbf
3805
3804
2025-03-16T09:37:04Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Type Name uplink downlink details
------------------------------------------------------------------------
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
16f195c9c8fb75399c50b8dc3991520a8f07612e
3806
3805
2025-03-16T09:39:02Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Type Name uplink downlink details
------------------------------------------------------------------------
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
PO-101
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
b52c650233ec160ac6a0df5ac581a39a1405b15e
3807
3806
2025-03-16T09:42:26Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
SO-115 145.925 436.888 aka HADES
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
0b5e78e18f93a17f0949108af63fc616f6e62d50
3808
3807
2025-03-16T09:47:09Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 reentered voice,fsk SO-115 145.925 436.888 aka HADES
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
f0c91f4a607842d0b2df83ddfdc217e9460dfe7d
3809
3808
2025-03-16T09:52:08Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 rpt stopped in Nov 2011 due to battery failure
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
71fab295e73508c26a15f44b3cd1d427a343b8fc
3810
3809
2025-03-16T09:57:42Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
AO-92
CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
AO-85 problem with uplink, 5 Watt often not enough
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 rpt stopped in Nov 2011 due to battery failure
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
a72a76b29b475b0681d0fa285516d8f3a28fca41
3811
3810
2025-03-16T10:01:19Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43137 AO-92 435.350 (+67Hz) 145.880 aka FOX-1D
CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
AO-85 problem with uplink, 5 Watt often not enough
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 rpt stopped in Nov 2011 due to battery failure
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
54b579fa831a216ba4a1d4ccd5cc22cb069db77a
3812
3811
2025-03-16T10:03:27Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 afsk AO-27 145.850 436.795 aka Eyesat
Lilacsat-2
AO-85 problem with uplink, 5 Watt often not enough
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 rpt stopped in Nov 2011 due to battery failure
43137 inactive AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
e7fdfd97f68f9a8c7d6bb91a3d03103523414ff1
3813
3812
2025-03-16T10:05:53Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 AFSK AO-27 145.850 436.795 aka Eyesat
40908 active AFSK/GFSK Lilacsat-2 144.350 beacon at 437.100
AO-85 problem with uplink, 5 Watt often not enough
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 rpt stopped in Nov 2011 due to battery failure
43137 inactive AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
9efa1234c577b3157132e494df30945bd4606b17
3814
3813
2025-03-16T10:10:01Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 AFSK AO-27 145.850 436.795 aka Eyesat
40908 active AFSK/GFSK Lilacsat-2 144.350 144.390 beacon at 437.200
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
dc0404f7d0d83d842542adf3f1643d91ebd12718
3815
3814
2025-03-16T10:12:27Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 active AFSK AO-27 145.850 436.795 aka Eyesat-1
40908 active AFSK/GFSK Lilacsat-2 144.350 144.390 beacon at 437.200
</pre>
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
cbff2fae551a493cb08c18ec190a804081ae116e
3816
3815
2025-03-16T10:31:31Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 active AFSK AO-27 145.850 436.795 aka Eyesat-1
40908 active AFSK/GFSK Lilacsat-2 144.350 144.390 beacon at 437.200
</pre>
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|}
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
7f6a4ff3cc7c6aa4eff30900a466c449bc3d1731
3817
3816
2025-03-16T10:33:11Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
43017 active voice AO-91 435.250 (+67Hz) 145.960 aka FOX-1B RADFXSAT
43678 active CW, 1k2 AFSK PO-101 437.500 145.900 aka DIWATA 2B, callsign D1W2PH
22825 active AFSK AO-27 145.850 436.795 aka Eyesat-1
40908 active AFSK/GFSK Lilacsat-2 144.350 144.390 beacon at 437.200
</pre>
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
44572372b2bd667238febd11cc8efd7a1e8fff3a
3818
3817
2025-03-16T10:37:09Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
27607 active voice SO-50 145.850 (+67Hz) 436.795 aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
</pre>
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
31198f452c86c92290e98279f544c07557e217b7
3819
3818
2025-03-16T10:38:48Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
<pre>
NORAD Status Mode(s) Name uplink downlink details
----- ------ ------- ---- ------ -------- -------
51080 inactive voice,fsk SO-115 145.925 436.888 aka HADES, reentered
28375 inactive voice AO-51 144 435 transponder stopped in Nov 2011 due to battery failure
43137 inactive voice AO-92 435.350 (+67Hz) 145.880 aka FOX-1D, reentered
40967 inactive voice AO-85 435.182 145.980 aka FOX-1A, problem with uplink, 5 Watt often not enough
</pre>
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
fa7b7f78bb2dc66ab508ba80402646db8dbeebf2
3820
3819
2025-03-16T10:43:18Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:green"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:green"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with AO-91 you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
7f7cb7720a669dfc743691852d4f574ce8ecbbc5
3821
3820
2025-03-16T10:44:04Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:green"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:green"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your uplink. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
b314d8aef9caf5b6c299a8824bcf0127acefd9fe
3822
3821
2025-03-16T10:44:21Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:green"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:green"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
55b392db783bca32e697fd5cd94083b5312dec32
3823
3822
2025-03-16T10:44:44Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|urls
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
33b2bca68a4b90ce95640e94f71534e5d977b884
3824
3823
2025-03-16T10:45:53Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|https://www.heavens-above.com/satinfo.aspx?satid=43017
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
842c5150de9ba6aaf464cd4219b0160987711879
3825
3824
2025-03-16T10:47:35Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|urls
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|urls
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
fdd854497c7294d68476014e422e5f7d25463787
3826
3825
2025-03-16T10:49:32Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|urls
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|urls
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|urls
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|urls
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|urls
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|urls
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
e6b8dbe9b9f35f40cff36aeeb07f7fa9811fdfd5
3827
3826
2025-03-16T10:51:03Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
4bb9ad85ef2a284d45f1ff01d85b34b4d89fd775
3828
3827
2025-03-16T20:44:05Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
13808af91a0dad4b70369beac3aa1563d85a8ae2
3829
3828
2025-03-16T20:45:02Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
ac4faf6ce315d81c86dbd8f0e47c19e280584d2f
3830
3829
2025-03-16T20:45:41Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
79e4b1a344dda9e99fb3fd9f53527df0e4c09f69
3831
3830
2025-03-16T20:46:17Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
5c1075710c4764be4541820f4f13e5c97d90171d
3832
3831
2025-03-16T20:46:59Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
ca56d7d05fa43d77b612384f734b8cc902bd136a
3833
3832
2025-03-16T20:48:15Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
137d9a509cf6c9445f545031b770a5a9ad0fdf54
3834
3833
2025-03-16T20:49:22Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Inactive
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Inctive
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
2503468fc5fda27a4536dd9fde7c744291d4d90b
Satellites
0
915
3835
3834
2025-03-16T20:50:27Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Reentered
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Reentered
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
b347f34e317e7c60e5a9c1be67843023b254984b
3836
3835
2025-03-17T00:11:03Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Reentered
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Reentered
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
Example frequencies for working SO-50
<pre>
TX uplink RX downlink Details
AOS 145.850 +74.4Hz Resets 10-minute timer
145.850 +67.0Hz 436.805
145.850 +67.0Hz 436.800
max alt 145.850 +67.0Hz 436.795
145.850 +67.0Hz 436.790
LOS 145.850 +67.0Hz 436.785
<pre>
0757592324bb0f3bf0ca842b45d4aca63f249e18
3837
3836
2025-03-21T07:59:52Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Reentered
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Reentered
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
Example frequencies for working SO-50
<pre>
RX downlink TX uplink Details
AOS 145.850 +74.4Hz Resets 10-minute timer
436.805 145.850 +67.0Hz
436.800 145.850 +67.0Hz
max alt 436.795 145.850 +67.0Hz
436.790 145.850 +67.0Hz
LOS 436.785 145.850 +67.0Hz
<pre>
Example frequencies for working AO-91
<pre>
RX downlink TX uplink Details
AOS 145.960 435.240 +67.0Hz
145.960 435.245 +67.0Hz
max alt 145.960 435.250 +67.0Hz
145.960 435.255 +67.0Hz
LOS 145.960 435.260 +67.0Hz
<pre>
ea12c5c7e0600f99a002fa066b53d489b925b1d3
3838
3837
2025-03-21T08:00:20Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|145.850 (+67Hz)
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|435.250 (+67Hz)
|145.960
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|437.500
|145.900
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|145.850
|436.795
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.350
|144.390
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Reentered
|voice,FSK
|SO-115
|145.925
|436.888
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|144
|435
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Reentered
|voice
|AO-92
|435.350 (+67Hz)
|145.880
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|435.182
|145.980
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
Example frequencies for working SO-50
<pre>
RX downlink TX uplink Details
AOS 145.850 +74.4Hz Resets 10-minute timer
436.805 145.850 +67.0Hz
436.800 145.850 +67.0Hz
max alt 436.795 145.850 +67.0Hz
436.790 145.850 +67.0Hz
LOS 436.785 145.850 +67.0Hz
</pre>
Example frequencies for working AO-91
<pre>
RX downlink TX uplink Details
AOS 145.960 435.240 +67.0Hz
145.960 435.245 +67.0Hz
max alt 145.960 435.250 +67.0Hz
145.960 435.255 +67.0Hz
LOS 145.960 435.260 +67.0Hz
</pre>
4bf174971e3df3a4041c0f3f131fd8f219dcd196
3839
3838
2025-03-21T08:08:18Z
Admin
1
wikitext
text/x-wiki
Amateur Radio FM Satellites
===Active:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|27607
|style="color:green"|Active
|voice
|SO-50
|436.795
|145.850 (+67Hz)
|[https://www.heavens-above.com/satinfo.aspx?satid=27607 HA] [https://www.n2yo.com/satellite/?s=27607#results N2YO]
|aka Saudisat 1C Oscar, use 145.850 +74.4 Hz to 'unlock' the repeater for 10 mins (if no activity)
|-
|43017
|style="color:green"|Active
|voice
|AO-91
|145.960
|435.250 (+67Hz)
|[https://www.heavens-above.com/satinfo.aspx?satid=43017 HA] [https://www.n2yo.com/satellite/?s=43017 N2YO]
|aka FOX-1B, RADFXSAT
|-
|43678
|style="color:green"|Active
|CW/1k2/AFSK
|PO-101
|145.900
|437.500
|[https://www.heavens-above.com/satinfo.aspx?satid=43678 HA] [https://www.n2yo.com/satellite/?s=43678#results N2YO]
|aka DIWATA 2B, callsign D1W2PH
|-
|22825
|style="color:green"|Active
|AFSK
|AO-27
|436.795
|145.850
|[https://www.heavens-above.com/satinfo.aspx?satid=22825 HA] [https://www.n2yo.com/satellite/?s=22825#results N2YO]
|aka Eyesat-1
|-
|40908
|style="color:green"|Active
|AFSK/GFSK
|Lilacsat-2
|144.390
|144.350
|[https://www.heavens-above.com/satinfo.aspx?satid=40908 HA] [https://www.n2yo.com/satellite/?s=40908#results N2YO]
|beacon at 437.200
|}
===Inactive:===
{| style="background-color:#f9f9f9;" cellpadding="10" cellspacing="0" border="1"
|style="background-color:#f2f2f2;"|<b>NORAD</b>
|style="background-color:#f2f2f2;"|<b>Status</b>
|style="background-color:#f2f2f2;"|<b>Mode(s)</b>
|style="background-color:#f2f2f2;"|<b>Name</b>
|style="background-color:#f2f2f2;"|<b>Downlink</b>
|style="background-color:#f2f2f2;"|<b>Uplink</b>
|style="background-color:#f2f2f2;"|<b>URL(s)</b>
|style="background-color:#f2f2f2;"|<b>Details</b>
|-
|51080
|style="color:red"|Reentered
|voice,FSK
|SO-115
|436.888
|145.925
|[https://www.heavens-above.com/satinfo.aspx?satid=51080 HA] [https://www.n2yo.com/satellite/?s=51080#results N2YO]
|aka HADES, reentered
|-
|28375
|style="color:red"|Inactive
|voice
|AO-51
|435
|144
|[https://www.heavens-above.com/satinfo.aspx?satid=28375 HA] [https://www.n2yo.com/satellite/?s=28375#results N2YO]
|aka AMSAT ECHO, transponder stopped in Nov 2011 due to battery failure
|-
|43137
|style="color:red"|Reentered
|voice
|AO-92
|145.880
|435.350 (+67Hz)
|[https://www.heavens-above.com/satinfo.aspx?satid=43137 HA] [https://www.n2yo.com/satellite/?s=43137#results N2YO]
|aka FOX-1D, reentered
|-
|40967
|style="color:red"|Inactive
|voice
|AO-85
|145.980
|435.182
|[https://www.heavens-above.com/satinfo.aspx?satid=40967 HA] [https://www.n2yo.com/satellite/?s=40967#results N2YO]
|aka FOX-1A, problem with uplink, 5 Watts often not enough
|}
(Status was last checked on 2025-03-16 using information available from the various satellite organisations, this is not indicative whether you'll be able to make a successful connection to it)
===Frequency offset===
Add or subtract about 15kHz to compensate for the doppler effect
offset is more pronounced on higher frequencies, so with 70cm uplinks you need to be fairly precise with your frequencies. In these cases, a duplex radio (listen while you transmit) is desirable to confirm you can be heard.
Example frequencies for working SO-50
<pre>
RX downlink TX uplink Details
AOS 145.850 +74.4Hz Resets 10-minute timer
436.805 145.850 +67.0Hz
436.800 145.850 +67.0Hz
max alt 436.795 145.850 +67.0Hz
436.790 145.850 +67.0Hz
LOS 436.785 145.850 +67.0Hz
</pre>
Example frequencies for working AO-91
<pre>
RX downlink TX uplink Details
AOS 145.960 435.240 +67.0Hz
145.960 435.245 +67.0Hz
max alt 145.960 435.250 +67.0Hz
145.960 435.255 +67.0Hz
LOS 145.960 435.260 +67.0Hz
</pre>
4293010b6ea7fba2cc6c2e5ed29864a0591d6306
Main Page
0
1
3840
3775
2025-03-21T21:44:56Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Astronomy]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around April 2025.
Click here for the KiwiSDR waterfall page: http://www.marcelpost.com:8073
[[File:Kiwisdr-waterfall.jpg|left|link=http://www.marcelpost.com:8073]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
a949083286f93953c56ca49e52e950341d15d11e
3841
3840
2025-03-22T02:00:32Z
Admin
1
wikitext
text/x-wiki
Welcome to the Marcelpost.com Wiki Pages!
For those pages and topics that need a more formal look I have set up this mediaWiki instance.
At present only a few pages are set up but over time it should contain pages in the following categories:
* [[Electronics]]
* [[Computers]]
* [[Programs]]
* [[Linux info]]
* [[Amateur Radio]]
* [[Astronomy]]
* [[Quadcopters]]
* [[Docs and Howto's]]
* [[WebLinks]]
* [[Movies]]
* [[RealEstate]]
* [[Nature]]
* [[Oddities]]
The KiwiSDR site is currently under maintenance.
We should be back around April 2025.
Click here for the KiwiSDR waterfall page: http://net.marcelpost.com:8073
[[File:Kiwisdr-waterfall.jpg|left|link=http://net.marcelpost.com:8073]]
For your KiwiSDR needs, you may find an alternative station by following the link below.
List of all publicly available KiwiSDR stations: http://kiwisdr.com/public/
77e6b5a3741b33c62863438bc9fd8526e8d78746